matplotlib.pyplot如何修改x轴刻度为指定月份标签(七月居中)
实现方法
你只需要在调用plt.show()前通过plt.xticks()手动指定x轴刻度位置和对应标签即可,原有绘图逻辑不需要做任何改动,两条曲线的颜色、线宽、点样式等原有效果会完全保留。
要满足七月(Jul)在x轴中间的要求,只需要把Jul对应的刻度位置设为x=0(当前x轴范围是-21到20,0就是视觉中点),其余月份按等间隔向两侧分布即可。
方案1:保留全部7个月份标签
7个标签按间隔6均匀分布,不会出现重叠问题,仅需添加1行代码:
# 刻度位置依次对应Apr、May、Jun、Jul、Aug、Sep、Oct,0点对应Jul处于轴中间 plt.xticks([-18, -12, -6, 0, 6, 12, 18], labels)
完整可运行代码如下:
import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm import statistics x_axis = np.arange(-21, 21, 1) # Calculating mean and standard deviation mean = statistics.mean(x_axis) sd = 0.5*statistics.stdev(x_axis) labels =["Apr","May","Jun","Jul","Aug","Sep","Oct"] plt.plot(x_axis, norm.pdf(x_axis, mean, sd),'ro',color='b',linewidth=3) plt.plot(x_axis, norm.pdf(x_axis, mean-0.3, sd-0.3),color='r',linewidth=2.5) # 替换x轴刻度为月份标签 plt.xticks([-18, -12, -6, 0, 6, 12, 18], labels) plt.show()
方案2:移除Apr、Oct标签(适配小尺寸画布)
如果画布尺寸偏小、x轴显示空间不足,可以删掉labels首尾的Apr和Oct,对应调整刻度位置即可,Jul依然保持在x轴中点:
# 移除首尾两个月份 labels =["May","Jun","Jul","Aug","Sep"] # 对应调整刻度位置,0点依然对应Jul plt.xticks([-12, -6, 0, 6, 12], labels)
将上述代码替换原代码中labels定义和xticks设置部分即可。
内容的提问来源于stack exchange,提问作者Luigi
相关产品推荐
相关产品推荐

