我想使用matplotlib显示类似于以下内容的水平直方图:
以下代码适用于垂直直方图:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame({'A':['Male'] * 10 + ['Female'] * 5})
plt.hist(df['A'])
plt.show()
orientation='horizontal'
参数使条形变为水平,但使水平标度变得模糊。
plt.hist(df['A'],orientation='horizontal')
以下方法可以工作,但是感觉很繁琐。有更好的方法吗?
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.set_xticks([0,5,10])
ax.set_xticklabels([0,5,10])
ax.set_yticks([0,1])
ax.set_yticklabels(['Male','Female'])
df['A'].hist(ax=ax,orientation='horizontal')
fig.tight_layout() # Improves appearance a bit.
plt.show()
答案 0 :(得分:1)
plt.hist(df['A'])
仅通过巧合起作用。我建议不要对非数字或分类图使用plt.hist
-这并不意味着要使用它。
此外,将数据聚合与可视化分离通常是一个好主意。因此,使用熊猫绘图
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'A':['Male'] * 10 + ['Female'] * 5})
df["A"].value_counts().plot.barh()
plt.show()
或使用matplotlib绘图
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'A':['Male'] * 10 + ['Female'] * 5})
counts = df["A"].value_counts()
plt.barh(counts.index, counts)
plt.show()