如何在pandas绘图时显示全部来自dataframe索引的x轴标签
解决方案
错误原因梳理
pandas绘制索引为字符串类型的DataFrame时,会自动将每个索引对应的x轴坐标映射为从0开始的连续整数,你之前的错误都是混淆了**刻度位置(数值型)和刻度标签(字符串型)**的使用场景:
- 第一种方法:
plot的xticks参数接收的是刻度位置数值,你传入字符串标签,pandas无法识别自动回退为默认整数刻度 - 第二种方法:
set_xticks需要传入刻度位置的数值,你直接传字符串标签,触发类型转换报错 - 第三种方法:未修改默认生成的刻度位置数量(默认仅7个),直接传入46个标签,数量不匹配报错
- 第四种方法:
FixedLocator需要传入数值型的位置参数,你传入字符串标签,matplotlib无法识别坐标导致绘图空白
正确实现代码
你只需要先将刻度位置设置为和索引数量匹配的连续整数,再绑定对应的字符串标签即可:
import matplotlib.pyplot as plt # 先绘制图像 ax = stat.plot() # 设置刻度位置:和索引数量一一对应的0到n-1整数 ax.set_xticks(range(len(stat.index))) # 设置对应刻度标签,按你需要的排序规则传入 xticks = sorted(stat.index.values) ax.set_xticklabels(xticks) # 如果标签过挤可以加旋转参数优化显示,比如 # ax.set_xticklabels(xticks, rotation=45, ha='right') plt.show()
内容的提问来源于stack exchange,提问作者Aleksey.Stack
相关产品推荐
相关产品推荐

