如何用Excel/Python绘制格式特殊的数据集图表?
分类位置数据的图表绘制方案
你的数据集可以绘制成图表,Excel和Python都能实现,具体方法如下:
Excel实现步骤
Excel完全可以处理这类数据,核心是先把数据转换成适合绘图的长格式,再生成折线图:
- 数据重塑:
- 选中原始表格,点击「数据」选项卡→「从表格/区域」,进入Power Query编辑器。
- 选中
Position列,点击「转换」→「逆透视其他列」,此时会生成三列:Position、属性、值。 - 重命名列:把「属性」改为「年份」,「值」改为「分类」,调整列顺序为「分类」、「年份」、「位置」,关闭并加载到Excel。
- 生成折线图:
- 选中重塑后的三列数据,插入「带数据标记的折线图」,每个分类会自动生成一条折线,展示它在各年份的位置变化。
- 若想展示各年份不同位置的分类分布,也可以选择条形图,将年份设为X轴、位置设为Y轴,在数据点上标注分类。
Python实现方法
用pandas处理数据格式,配合matplotlib或seaborn绘图,代码示例如下:
1. 环境准备
先导入所需库:
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
2. 构建并转换数据
# 构建原始数据框 data = { 'Position': [1, 2, 3], '2012': ['A', 'C', 'B'], '2013': ['B', 'A', 'D'], '2014': ['A', 'C', 'E'] } df = pd.DataFrame(data) # 转换为长格式(适合折线图) df_long = df.melt(id_vars='Position', var_name='Year', value_name='Category') df_long = df_long[['Category', 'Year', 'Position']] df_long['Year'] = df_long['Year'].astype(int)
3. 绘制分类位置变化折线图
plt.figure(figsize=(8, 5)) # 为每个分类绘制折线 for category in df_long['Category'].unique(): cat_data = df_long[df_long['Category'] == category] plt.plot(cat_data['Year'], cat_data['Position'], marker='o', label=category) # 设置图表元素 plt.xlabel('年份') plt.ylabel('位置') plt.title('各分类随年份的位置变化') plt.legend(title='分类') plt.yticks([1, 2, 3]) # 固定Y轴为整数位置 plt.show()
4. 绘制年份-位置分类热力图(可选)
如果想直观展示每个位置在各年份的分类,可绘制热力图:
plt.figure(figsize=(6, 4)) heatmap_data = df.set_index('Position') # 绘制热力图并标注分类 sns.heatmap(heatmap_data.applymap(lambda x: ord(x)-ord('A')), annot=heatmap_data, fmt='', cmap='viridis', xticklabels=heatmap_data.columns, yticklabels=heatmap_data.index) plt.xlabel('年份') plt.ylabel('位置') plt.title('各年份-位置的分类分布') plt.show()
内容的提问来源于stack exchange,提问作者ErroneousErrors
相关产品推荐
相关产品推荐

