首页 > 解决方案 > 使用字符串时,如何使用 matplotlib 更改 x 轴间隔?

问题描述

我有一个以这种方式绘制的数据框“道路”(所以是一个带点的图表):

ax = roads.plot(x='Link_no', y='Road_quality_index', style='o')

x 轴是字符串形式的链接编号(这些是路段编号)。现在,python 会自动保留其中一些字符串(十分之九)以保持可读性。但是,我想显示更少的 x 轴点,只有大约 20 个点中的 1 个。

在网上,大多数人提到使用 plt.yticks。但是,我相信这只有在您使用整数或浮点数时才有可能。

有人可以帮助我们吗?

标签: pythonstringmatplotlibaxisintervals

解决方案


您可以获取当前的刻度,对其重新采样,并将稀疏列表设置为新的刻度。下面作为示例,我通过检查 mod(index(a),20)==0 进行采样,这对于每 20 个标签中的 1 个标签是正确的。

# current x labels
current_ticks = ax.get_xticklabels()
# resampling every other label, change mod(20) to sample less
custom_ticks = [a.get_text() for a in current_ticks if current_ticks.index(a)%20==0] 
# set as new labels
ax.set_xticks(custom_ticks)
ax.set_xticklabels(custom_ticks)

推荐阅读