我正在尝试使用matplotlib绘制以下数据。
Month A B C
0 2014/06 41 17 3
1 2014/07 48 11 7
2 2014/08 58 20 4
3 2014/09 43 16 6
4 2014/10 73 13 7
5 2014/11 69 22 16
6 2014/12 65 34 9
7 2015/01 69 27 12
我有以下代码:
x = np.arange(len(df["Month"].values))
y1=df["A"].values.astype(int)
y2=df["B"].values.astype(int)
y3=df["C"].values.astype(int)
my_xticks = df["Month"].values
plt.xticks(x, my_xticks)
plt.plot(x,y1)
plt.plot(x,y2)
plt.plot(x,y3)
plt.show()
问题是月份在x轴上相互重叠。我可以通过Python自动调整吗?我不仅需要旋转,还会自动忽略几个月。否则,它太拥挤了。
答案 0 :(得分:1)
Matplotlib有一个函数可以在日期时自动格式化x轴 - autofmt_xdate
。这会自动旋转标签,并定位刻度。可以通过将参数传递给此函数来更改它们。当然,它们也可以手动更改,但这需要(稍微)更多的努力。
使用切片表示法[::2]
# Code here that creates a list of dates called list_of_dates...
print (list_of_dates)
# ['2016-08', '2016-09', '2016-10', '2016-11', '2016-12', '2017-01',
# '2017-02', '2017-03', '2017-04', '2017-05', '2017-06', '2017-07',
# '2017-08', '2017-09', '2017-10', '2017-11', '2017-12', '2018-01']
x = np.arange(0, len(list_of_dates), 1)
plt.xticks(x[::2], list_of_dates[::2])
plt.plot(x, np.random.randn(len(list_of_dates)))
# plt.gcf() means "get current figure"
plt.gcf().autofmt_xdate(ha="center")
plt.show()
给出了: