自定义python的matplotlib中的X轴刻度(为时间)

转载:https://www.zhihu.com/question/54051233/answer/1174232322

给个例子


例子
#绘图部分
times=order_data['start_time_noday'].tolist()
# 分时间区间,保证最后一位纳入标签
ticks=list(range(0,len(times),2))
if ticks[-1]!=len(times)-1:
    ticks.append(len(times)-1)
labels=[times[i] for i in ticks]
# 中文和负号的正常显示
mpl.rcParams['font.sans-serif'] = ['Times New Roman']
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
fig= plt.figure(figsize=(8, 4),dpi=100)
# 设置图形的显示风格
plt.style.use('ggplot')
ax1 = fig.add_subplot(111)
ax1.plot(order_data['order_id'],'-v',linewidth=1.5)
ax1.legend(loc='upper right', frameon=False,fontsize = 10)
ax1.set_xlabel('时间',fontsize =10)
ax1.set_ylabel('订单量',fontsize =10)
ax1.set(xlim=[0,len(times)-1])
ax1.set_xticks(ticks)
ax1.set_xticklabels(labels, rotation=45, horizontalalignment='right')
ax1.tick_params(labelsize=8)
ax1.set_title('骑行订单时间分布',fontsize =8)
ax1.legend(loc='upper right', frameon=False,fontsize = 10)
plt.savefig('./time_distribute.png',format='png', dpi=300)
plt.show()

绘图结果


result

主要起作用的是这两行

ax1.set_xticks(ticks)
ax1.set_xticklabels(labels, rotation=45, horizontalalignment='right')
ticks代表刻度位置,labels是在刻度位置显示的标签
下面代码中的2代表间隔两个显示,可以根据需求自行更改
times=order_data['start_time_noday'].tolist()
# 分时间区间,保证最后一位纳入标签
ticks=list(range(0,len(times),2))
if ticks[-1]!=len(times)-1:
    ticks.append(len(times)-1)
labels=[times[i] for i in ticks]

如,改为5


result

你可能感兴趣的:(自定义python的matplotlib中的X轴刻度(为时间))