Python matplotlib绘图xticklabels与实际x轴刻度不重合问题咨询
问题原因
- 调用
set_xticklabels()方法前没有显式指定x轴刻度的位置:matplotlib会默认根据x轴数值范围生成均匀分布的刻度,此时直接传入自定义标签,只会按顺序给默认的均匀刻度分配标签,自然无法和你存储真实x坐标的listOfSteps1的位置一一对应。 listOfSteps1本身是不均匀的数值序列,和matplotlib默认生成的均匀刻度位置完全不匹配,进一步加剧了错位。
解决方案
先调用ax.set_xticks()指定刻度位置为listOfSteps1,再调用set_xticklabels()设置对应标签即可,修正后的完整代码如下:
import matplotlib.pyplot as plt A=[0.4533333333333333, 0.6033333333333334, 0.7033333333333335, 0.59, 0.49666666666666665, 0.49666666666666665, 0.4166666666666667, 0.7600000000000001] EB_A =[0.04800000000000001, 0.06497800193279869, 0.06003509868180174, 0.05379449471770337, 0.055139672522411476, 0.06977298499632904, 0.06328550572939434, 0.04762818959864468] currentNamesList = ['0','4h','6h','16h','24h','48h','4d','6d'] listOfSteps1=[0,4,6,16,24,48,96,144] fig, ax = plt.subplots() ax.plot(listOfSteps1, A,label= 'ATRA') ax.errorbar(listOfSteps1, A, yerr = EB_A) plt.xlabel('Time',fontsize=12) plt.ylabel('Average Correlation' , fontsize=12) # 先显式指定刻度位置和自定义坐标对应 ax.set_xticks(listOfSteps1) ax.set_xticklabels(currentNamesList) plt.legend(loc= 'upper left') plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者Raz
相关产品推荐
相关产品推荐

