You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中绘制3×8结构的指定数据图表(非crosstab统计)

Python实现3×8矩阵数据可视化

以下是用Python结合pandas和seaborn实现你需求的方案,直接基于你提供的固定数据生成3行(B50、S50、B50-S50)8列(x1至x8)的可视化图表:

第一步:准备数据并导入依赖库

先把给定数据整理成pandas.DataFrame,再转置为你需要的行列结构:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 定义原始数据
data = {
    'Sector': ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8'],
    'B50': [19.94, 14.09, 9.33, 15.63, 8.25, 3.81, 11.88, 17.25],
    'S50': [19.00, 12.29, 10.60, 12.01, 17.61, 3.48, 12.81, 12.16],
    'B50 - S50': [0.94, 1.80, -1.27, 3.62, -9.36, 0.33, -0.93, 5.09]
}

# 转为DataFrame并转置,让B50、S50、B50-S50成为行,Sector成为列
df = pd.DataFrame(data).set_index('Sector').T

第二步:绘制热力图(直观展示数值分布)

热力图适合展示矩阵形式的数值数据,能清晰呈现每个单元格的数值大小:

plt.figure(figsize=(10, 4))
# 绘制热力图,显示数值、设置颜色映射
ax = sns.heatmap(df, annot=True, fmt='.2f', cmap='coolwarm', cbar=True)
# 设置标题和轴标签
ax.set_title('3×8 Sector Data Visualization', fontsize=12)
ax.set_ylabel('Metrics', fontsize=10)
ax.set_xlabel('Sector', fontsize=10)
# 调整布局避免标签截断
plt.tight_layout()
plt.show()

备选:绘制分组条形图(对比各Sector下的指标)

如果需要对比每个Sector中三个指标的差异,可以用分组条形图:

plt.figure(figsize=(12, 6))
# 绘制条形图
df.T.plot(kind='bar', ax=plt.gca())
plt.title('Metrics by Sector', fontsize=12)
plt.xlabel('Sector', fontsize=10)
plt.ylabel('Value', fontsize=10)
plt.legend(title='Metrics')
plt.tight_layout()
plt.show()

这两种方案都直接基于固定数据处理,不需要使用crosstab(),完全满足你要的3×8形式数据展示需求。

内容的提问来源于stack exchange,提问作者Larry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:31:05