我是matplotlib和pyplot的新手,并试图绘制一个大型数据集。下面是一个小片段。
情节起作用了,但是xtick标记很拥挤。
如何减少刻度线的数量?
使用plt.locator_params(nbins=4)
返回错误:
AttributeError: 'FixedLocator' object has no attribute 'set_params'
有没有一种方法可以从pyplot中的日期标签中删除0填充?
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
xticks = ['01/01', '01/02', '01/03', '01/04', '01/05', '01/06', '01/07', '01/08', '01/09', '01/10', '01/11', '01/12', '01/13', '01/14', '01/15', '01/16', '01/17', '01/18', '01/19', '01/20', '01/21', '01/22', '01/23', '01/24', '01/25', '01/26', '01/27', '01/28', '01/29', '01/30']
y = [80, 80, 60, 30, 90, 50, 200, 300, 200, 150, 10, 80, 20, 30, 40, 150, 160, 170, 180, 190, 20, 210, 220, 20, 20, 20, 200, 270, 280, 90, 00]
y2 = [100, 100, 200, 300, 40, 50, 60, 70, 80, 90, 100, 110, 12, 13, 10, 110, 16, 170, 80, 90, 20, 89, 28, 20, 20, 28, 60, 70, 80, 90, 30]
plt.plot(x, y)
plt.plot(x, y2)
plt.xticks(x, xticks, rotation=90)
plt.show()
2条答案
按热度按时间1u4esq0p1#
由于matplotlib有一些非常好的日期工具,我认为将日期字符串转换为
datetime.datetime
对象是有意义的。然后你可以使用一个方便的日期定位器;在这种情况下,
DayLocator
最有意义。要跳过一些标签,您可以使用interval
kwarg。然后,要从xticklabels中删除前导零,您需要一个自定义格式函数。
上面的代码生成以下图:
vfhzx4xs2#
使用maxNLocator
另见https://stackoverflow.com/a/13418954/541038