如何修改Matplotlib直方图的X轴为自定义文本刻度?
解决Matplotlib直方图自定义X轴刻度标签的问题
直接传字符串列表给plt.xticks()会报错,因为这个函数需要先指定刻度的坐标位置,再对应设置标签字符串;只传标签的话,Matplotlib不知道该把这些文字放在X轴的哪个位置。
修复后的完整代码
import matplotlib.pyplot as plt import numpy as np x = np.arange(1,30) # 捕获hist返回的bin边界值,这是调整刻度的关键 n, bins, patches = plt.hist(x, bins=10, edgecolor='k') plt.title('Histogram') # 计算每个bin的中心位置作为刻度点 bin_centers = (bins[:-1] + bins[1:]) / 2 # 传入位置+对应标签,完成自定义刻度 plt.xticks(bin_centers, [ 'first','second','third','fourth','fifth', 'sixth','seventh','eighth','ninth','tenth' ]) plt.show()
额外说明
- 如果你想把标签放在每个bin的左边界,直接用
bins[:-1]作为位置参数;想放在右边界就用bins[1:] - 必须保证标签数量和刻度位置数量一致(这里都是10个,刚好对应10个bin)
内容的提问来源于stack exchange,提问作者Elsaid Sami Elsaid Mohamed
相关产品推荐
相关产品推荐

