Python MatPlotLib刻度线

时间:2018-11-16 01:06:23

标签: python matplotlib

请帮助我找出这些刻度线。我已经为此工作了几个小时,但找不到解决方案。该数据集收集了1996-04年至2018年末各个城市的平均房价。这是我的代码:

# Plotting Hot Springs housing value over time
fig=plt.figure(figsize=(20, 8), dpi= 80, facecolor='w', edgecolor='k')
ax=plt.axes
plt.plot(syrHST['71913'],color='blue')
plt.plot(syrHST['71901'],color='red')
plt.xticks(rotation='vertical', fontsize=20)
plt.ylabel('Average Housing Value', fontsize=20)
plt.gca().legend(('71913','71901'), fontsize=20, loc='upper left')
fig.suptitle('Hot Springs', fontsize=40)
plt.show()

这是向我展示的内容:

显然,沿x轴的那些刻度标签不好。我需要找到一种方法将标签的数量减少到22个左右,以便可以清晰地阅读它们。我尝试旋转标签,但这无济于事。请帮助我。

2 个答案:

答案 0 :(得分:0)

您可以使用以下方法将刻度线设置为np.arange的某些输出:

def aranger(cols, n_ticks):
    return np.arange(cols.min(), cols.max(), (cols.max()-cols.min())/n_ticks)

# Plotting Hot Springs housing value over time
fig=plt.figure(figsize=(20, 8), dpi= 80, facecolor='w', edgecolor='k')
ax=plt.axes
index = aranger(syrHST[['71913','71901']], 10)
plt.plot(syrHST['71913'],color='blue')
plt.plot(syrHST['71901'],color='red')
plt.xticks(index, rotation='vertical', fontsize=20)
plt.ylabel('Average Housing Value', fontsize=20)
plt.gca().legend(('71913','71901'), fontsize=20, loc='upper left')
fig.suptitle('Hot Springs', fontsize=40)
plt.show()

没有伪数据,我无法测试,但这是我认为可以用于解决此问题的一般模式。

答案 1 :(得分:0)

您的日期是字符串。因此,它们被解释为类别,并且每个类别都有其自己的标签。您要做的就是将它们转换为实际日期。

df.index = pd.to_datetime(df.index)

如果您随后在数据框中绘制一列,则会显示一些自动日期(大多数情况下,沿轴的日期不超过9)。