使用Matplotlib为子图设置commom xticks(字符串)

时间:2016-02-26 15:57:32

标签: python matplotlib

给定一组子图,我想为它们设置常见的xticks标签。我知道当滴答数字是数字时如何做到这一点:

cmap = plt.get_cmap('Set3')
colors = [cmap(i) for i in numpy.linspace(0, 1, 18)]

data_1 = numpy.random.rand(18, 7)
data_2 = numpy.random.rand(18, 7)
data_3 = numpy.random.rand(18, 7)
data_4 = numpy.random.rand(18, 7)

y = range(365)
plt.figure(figsize=(15,7))
for i in range(18):
    plt.plot(y, data_1[i, :], color=colors[i], linewidth=2)
    plt.plot(y, data_2[i, :], color=colors[i], linewidth=2)
    plt.plot(y, data_3[i, :], color=colors[i], linewidth=2)
    plt.plot(y, data_4[i, :], color=colors[i], linewidth=2)
plt.setp(axes, xticks=range(7))
plt.tight_layout()

enter image description here

但是,现在我希望我的ticks标签是字符串。鉴于此,我尝试过这样的事情:

plt.setp(axes, xticks=(range(12), ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']))

但它不起作用:

  

ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在xticks上手动设置字符串,如下例所示:

x = [1,2,3,4,5,6,7,8,9,10,11,12]
y = [1,2,3,4,5,6,7,8,9,10,11,12]

plt.plot(x,y)
my_xticks = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

plt.xticks(x, my_xticks)
plt.show()