使用自定义文本绘制x轴点


106

我正在使用matplotlib和python绘制图,如下面的示例代码。

x = array([0,1,2,3])
y = array([20,21,22,23])
plot(x,y)
show()

因为它是上面x轴上的代码,所以我将看到绘制的值,0.0, 0.5, 1.0, 1.5即与参考x值相同的值。

无论如何,有没有将x的每个点映射到不同的字符串?因此,例如,我希望x轴显示月份名称(字符串Jun, July,...)或其他字符串,如人员姓名("John", "Arnold", ...)或时钟时间("12:20", "12:21", "12:22", ..)。

您知道我能做什么或要看什么功能吗?
对我而言,这有matplotlib.ticker帮助吗?

Answers:


195

您可以使用pyplot.xticks手动设置xticks(和yticks):

import matplotlib.pyplot as plt
import numpy as np

x = np.array([0,1,2,3])
y = np.array([20,21,22,23])
my_xticks = ['John','Arnold','Mavis','Matt']
plt.xticks(x, my_xticks)
plt.plot(x, y)
plt.show()


44
rotation有时也有用:plt.xticks(range(5), ["some", "words", "as", "x", "ticks"], rotation=45)
Adobe

4
以及如何沿x轴均匀分散项目?假设我的x轴内部有1百万个点,而我只想沿均匀分布的轴显示John,Arnold,Mavis和Matt?
史蒂夫·K

@SirBenBenji:使用索引(例如x[idx])仅选择要显示的数据。
unutbu 2014年

我不明白为什么你写pylab,我认为答案是过时的和错误的。
马里奥·克伦

1

这对我有用。X轴上的每个月

str_month_list = ['January','February','March','April','May','June','July','August','September','October','November','December']
ax.set_xticks(range(0,12))
ax.set_xticklabels(str_month_list)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.