相同x值导致Matplotlib绘图y值与错误x值关联的问题如何解决
问题原因
你直接将字符串类型的Col1传入ax.plot()作为x参数时,Matplotlib会自动对分类值做去重聚合,相同字符串会被映射到同一个x坐标位置,才会导致后续设置全量刻度标签时出现错位。
解决方法
画图时用行索引作为x轴坐标值,避免重复分类被合并,再将刻度标签替换为Col1的取值即可,修改后的代码如下:
import pandas as pd import matplotlib.pyplot as plt dfa = pd.DataFrame( { "Col1": ["A", "A", "H"], "Col2": [1, 3, 5], "Col3": [2, 4, 6], } ) x_pos = range(len(dfa)) x_labels = dfa["Col1"] y = dfa[["Col2", "Col3"]] fig, ax = plt.subplots() ax.plot(x_pos, y) # 传入数值索引作为x坐标,不会合并重复值 ax.set_xticks(x_pos) ax.set_xticklabels(x_labels) plt.show()
说明
该方案不限制Col1的取值是否重复,每个数据点的x位置严格对应行顺序,完全满足你需要展示所有x标签的需求。
内容的提问来源于stack exchange,提问作者ThomasAJ
相关产品推荐
相关产品推荐

