PYTHON - 在 pandas 中从 matplotlib 的交叉表中显示堆叠水平条形图中 100 的百分比
PYTHON - Display percent of 100 in stacked horizontal bar plot from crosstab from matplotlib in pandas
这是我的一段代码。
一切正常,只是显示 0% 是错误的。
这是我的一段代码。怎么了?
import matplotlib.pyplot as plt
ax= pd.crosstab(df4['State'], df4['Status_new']).apply(lambda r: r/r.sum()*100, axis=1)
ax_1 = ax.plot.barh(figsize=(10,10),stacked=True, rot=0)
display(ax)
plt.legend(loc='upper center', bbox_to_anchor=(0.1, 1.0), title="Subject")
plt.xlabel('Status')
plt.ylabel('State')
for rec in ax_1.patches:
height = rec.get_height()
ax_1.text(rec.get_x() + rec.get_width() / 2,
rec.get_y() + height / 2,
"{:.0f}%".format(height),
ha='center',
va='bottom')
plt.show()
这是结果。我需要显示实际百分比。
因为这是水平 barh()
,text()
字符串应该是 width
而不是 height
:
"{:.0f}%".format(rec.get_width()),
这是我的一段代码。 一切正常,只是显示 0% 是错误的。 这是我的一段代码。怎么了?
import matplotlib.pyplot as plt
ax= pd.crosstab(df4['State'], df4['Status_new']).apply(lambda r: r/r.sum()*100, axis=1)
ax_1 = ax.plot.barh(figsize=(10,10),stacked=True, rot=0)
display(ax)
plt.legend(loc='upper center', bbox_to_anchor=(0.1, 1.0), title="Subject")
plt.xlabel('Status')
plt.ylabel('State')
for rec in ax_1.patches:
height = rec.get_height()
ax_1.text(rec.get_x() + rec.get_width() / 2,
rec.get_y() + height / 2,
"{:.0f}%".format(height),
ha='center',
va='bottom')
plt.show()
这是结果。我需要显示实际百分比。
因为这是水平 barh()
,text()
字符串应该是 width
而不是 height
:
"{:.0f}%".format(rec.get_width()),