Pandas绘图设置X轴刻度失效问题求助
解决X轴刻度标签错位、显示不全的问题
我来帮你搞定这个X轴刻度的问题!从你的描述和代码来看,核心问题是没有先指定X轴刻度的位置,直接设置标签导致标签和数据点不匹配,再加上pandas绘图默认会自动筛选显示的刻度,才出现了只显示部分邮编且位置错位的情况。
问题根源
当你直接调用ax4.set_xticklabels(postcodes)时,只是替换了当前已有刻度的标签,但pandas默认会根据数据范围自动选择显示哪些刻度(不是每个数据点都显示),这就导致标签数量和实际显示的刻度数量不匹配,位置自然就错位了。
修复后的代码
你需要先通过set_xticks指定每个数据点对应的刻度位置,再设置对应的邮编标签:
postcodes = ['6000', '6003', '6005', '6006', '6007', '6008', '6009', '6010', '6011', '6012'] ax4 = data9310.plot(title='Population 2011/2016') # 设置刻度位置为每个数据点的索引位置,确保每个数据点都有对应刻度 ax4.set_xticks(range(len(data9310))) # 为每个刻度设置对应的邮编标签 ax4.set_xticklabels(postcodes, rotation=0)
另一种更直观的方式
如果你的data9310行索引还没设置为邮编,可以直接把索引改成postcodes,这样绘图时X轴会自动关联这些标签:
postcodes = ['6000', '6003', '6005', '6006', '6007', '6008', '6009', '6010', '6011', '6012'] # 将数据的行索引设置为邮编 data9310.index = postcodes # 绘图时指定显示所有刻度 ax4 = data9310.plot(title='Population 2011/2016', xticks=range(len(data9310))) # 保持标签不旋转 ax4.set_xticklabels(postcodes, rotation=0)
这样修改后,每个数据点都会对应正确的邮编标签,所有邮编也都会完整显示出来啦!
内容的提问来源于stack exchange,提问作者Anthony.H
相关产品推荐
相关产品推荐

