在Excel中使用Python绘制热图时如何设置X轴为周次名称
在Excel中使用Python绘制热图时如何设置X轴为周次名称
嗨,我太懂你这种烦恼了——在Excel里用Python画热图,结果X轴偏偏显示成干巴巴的数字,完全不是你想要的Week1、Week2这些周次名称对吧?别慌,这其实是因为绘图时默认用了列的索引值,咱们只要手动指定X轴标签就行,我给你一步步说怎么弄:
首先,咱们得先把Excel里的数据正确读进来,还要处理好表头和数据部分:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 读取当前工作簿里的活动数据 df = pd.DataFrame(Excel.CurrentWorkbook.Data[0]) # 把第一行设为列名 df.columns = df.iloc[0] # 从第二行开始才是实际数据,截取这部分并重置索引 df = df[1:].reset_index(drop=True)
接下来,提取咱们需要的周次标签——也就是除了第一列「Names」之外的所有列名:
# 提取Week1、Week2这些周次名称作为X轴标签 x_axis_labels = df.columns[1:]
然后就可以绘制热图啦,关键是在heatmap函数里指定xticklabels参数为咱们刚提取的周次标签:
# 准备热图用的数值数据(转成float类型,避免绘图报错) heatmap_values = df.iloc[:, 1:].astype(float) # 设定画布大小,让显示更舒服 plt.figure(figsize=(10, 6)) # 绘制热图,同时指定X、Y轴的标签 sns.heatmap( heatmap_values, xticklabels=x_axis_labels, # 这里就是设置X轴为周次名称的关键 yticklabels=df.iloc[:, 0], # Y轴用Names列的名称 cmap='YlGnBu', # 选个好看的配色,你也可以换成自己喜欢的 annot=True # 如果想在热图里显示具体数值,就加上这个参数 ) # 把X轴标签旋转45度,避免名称太长重叠在一起 plt.xticks(rotation=45, ha='right') # 给热图加个标题 plt.title('每周数据热图') # 显示图形 plt.show()
要是你的周次列名带了额外后缀(比如Week1 (X42)),只想保留「Week1」这种简洁名称的话,也可以用字符串处理来提取:
# 提取列名里的周次部分,去掉括号里的内容 x_axis_labels = [col.split(' (')[0] for col in df.columns[1:]]
最后再提醒你两点:
- 确保Excel里的表头行(第一行)格式统一,没有多余的空格或者特殊字符,不然提取标签时容易出问题
- 在Excel的Python环境里,运行代码后图形一般会直接在输出窗口显示,要是没看到,检查一下是不是代码里漏了
plt.show()
内容来源于stack exchange




