【发布时间】:2020-02-05 18:02:57
【问题描述】:
我通过 Pandas 创建了一个堆积条形图,第一个和最后一个条形图位于图的边缘。他们被切断了。
我想要得到的图是一个堆积条形图和一个 2 y 轴的折线图。条形层的值应该显示在层中。
我创建了一个pd.DataFrame,其中包含以下内容:
1.0 1.3 1.7 2.0 2.3 2.7 3.0 3.3 3.7 4.0 5.0
SS 15 2.0 0.0 1.0 1.0 4.0 8.0 5.0 6.0 6.0 10.0 19.0
SS 16 1.0 1.0 5.0 2.0 11.0 16.0 11.0 8.0 7.0 6.0 12.0
SS 17 1.0 5.0 3.0 3.0 5.0 6.0 5.0 9.0 8.0 9.0 13.0
每一行 (SS 15-SS 17) 应该是一个堆叠的条形图,其中值是条形图的一层。
折线图只包含 3 个点,应该用一条线连接。
我用来绘制的代码是:
fig, ax1 = plt.subplots()
ax1 = df.plot(kind='bar',
stacked=True,
figsize=(20,15),
fontsize=20,
grid=True,
rot=45,
align='center',
edgecolor='#000000',
colormap='Paired')
ax2 = ax1.twinx()
ax1.set_xlabel('X-LABEL', fontsize=25)
ax1.set_ylabel('1st Y-LABLE', fontsize=25)
ax1.set_title(name, fontsize=35)
ax1.legend(fontsize=15, loc='upper left')
ax1.grid(True, axis='y')
df2 = pd.DataFrame(medi) #medi is just a dict with 3 pais
df2.plot(ax=ax2,
color='red',
marker='o',
linewidth='2',
fontsize=20)
ax2.legend(["2nd LEGEND"], fontsize=15, loc='upper right')
ax2.set_ylim(1,5)
ax2.set_ylabel('2nd Y-LABEL', fontsize=25)
ax2.grid(True,axis='y')
这会导致:
如您所见,第一个和最后一个条正好位于图表的边缘并被截断。我试图覆盖xticks,但没有成功。
我遇到的第二个问题是在条形图中显示值。我找到了解决方案here,但是却导致报错:
AttributeError: 'NoneType' object has no attribute 'update'
【问题讨论】:
-
align='edge'? -
你应该把你的第二个问题放在另一个问题中。
-
考虑为第二个问题打开另一个问题,但因为它不是那么重要,所以我也把它放在这里。下次会打开 2 个问题。
标签: python pandas matplotlib plot