使用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();
1:
我添加了jupyter笔记本的图像。红线是要删除的刻度线。
答案 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)