如何均匀隔开刻度线并旋转子图上的标签

时间:2019-06-24 01:03:11

标签: python matplotlib format

使用Jupyter笔记本matplotlib

我想在python matplotlib子图上均匀分布x刻度线,刻度频率(10)并旋转标签(angle = 45)。

方框2的格式最接近我想要的格式,但刻度线的间距不相等。我无法旋转Box 1 x标签,并且刻度线间距不相等。

ax1 = plt.xticks(rotation=45); ---不旋转45,而是旋转ax2。 我还在sharex=True标注中尝试了plt.subplot

plt.style.use('ggplot');  
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2,figsize=(14, 
4),sharex=False,sharey=True);
ax1.set_title('Box1', fontsize=17);
ax2.set_title('Box2', fontsize=17);
ax1.set_ylabel('Items', fontsize=15);

ax1.plot(item_1['var1'],linewidth=3,linestyle='solid',color='yellow');
ax1.plot(item_1['var1_inx'],linewidth=3,linestyle='dashed',color='yellow');
ax2.plot(item_1['var1_inx'],linewidth=3,linestyle='dashed',color='yellow');
ax2.plot(item_2['var1'],linewidth=3,linestyle='solid',color='yellow');
ax1.plot(item_1['var2'],linewidth=3,linestyle='solid',color='blue');
ax1.plot(item_1['var2_inx'],linewidth=3,linestyle='dashed',color='blue');
ax2.plot(item_1['var2_inx'],linewidth=3,linestyle='dashed',color='blue');
ax2.plot(item_2['var2'],linewidth=3,linestyle='solid',color='blue');
monthyearFmt = mdates.DateFormatter('%Y-%m');
ax1 = plt.xticks(rotation=45);
ax2.xaxis.set_major_formatter(monthyearFmt);

plt.show();

1enter image description here

我添加了jupyter笔记本的图像。红线是要删除的刻度线。

2 个答案:

答案 0 :(得分:0)

调用plt.xticks(...)会将这些刻度线应用于最近定义的坐标轴,ax2在您的情况下。要解决此问题,请从ax1 = plt.xticks(...)中删除分配部分(这是将ax2的标签本身分配给不需要的变量ax1),并在一行下添加函数调用在此处绘制所需的轴。例如,

ax1.plot(item_1['var1'],linewidth=3,linestyle='solid',color='yellow')
plt.xticks(rotation=45)

xticks还将刻度和相应标签的列表用作位置参数。

或者,可选地,您可以使用set_xticks来影响特定的子图。

此外,在python中不需要分号:)

答案 1 :(得分:0)

使用autofmt_xdate代替plt.xticks:

fig.autofmt_xdate(rotation=45)