我正在绘制matplotlib图,我的x轴由YYYYMM格式的年和月字符串组成,例如201901
,用于2019年1月。
我的问题是某些数据跨度很长,这使x轴刻度标签变得如此密集,以致于它们彼此堆积在一起,变得不可读。
我尝试将字体缩小,然后将标签旋转了90度,这虽然有很大帮助,但是对于我的某些数据还是不够的。
这是我的x轴之一看起来不错的示例:
下面是一个x轴示例,它太密集了,因为数据跨越了很长一段时间:
因此,我希望matplotlib在刻度标签开始彼此堆积时跳过打印一些刻度标签。例如,打印一月的标签,跳过打印二月,三月,四月和五月的标签,打印六月的标签,跳过打印七月,八月的标签,等等。但是我不知道该怎么做?
或者我可以使用其他解决方案来解决此问题吗?
答案 0 :(得分:0)
一种快速的肮脏解决方案如下:
ax.set_xticks(ax.get_xticks()[::2])
这只会显示每隔xtick一次。如果您只想显示第n个刻度,则可以使用
ax.set_xticks(ax.get_xticks()[::n])
如果您没有ax
的句柄,您可以将其作为ax = plt.gca()
。
或者,您可以指定要用于的xticks数量:
plt.locator_params(axis='x', nbins=10)
答案 1 :(得分:0)
替代解决方案可能如下:
x = df['Date']
y = df['Value']
# Risize the figure (optional)
plt.figure(figsize=(20,5))
# Plot the x and y values on the graph
plt.plot(x, y)
# Here you specify the ticks you want to display
# You can also specify rotation for the tick labels in degrees or with keywords.
plt.xticks(x[::5], rotation='vertical')
# Add margins (padding) so that markers don't get clipped by the axes
plt.margins(0.2)
# Display the graph
plt.show()