matplotlib - 在水平 matplotlib 直方图上显示 x 轴值
问题描述
我想使用 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()
解决方案
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()
推荐阅读
- c# - 重新加载场景后,GameObject.Find 在 Android 构建中不起作用
- javascript - 有没有办法阻止用户在他/她至少移动滑块(输入类型=范围)之前提交表单?
- mysql - mysql多个相似表查询[好像不重复]
- java - 如何通过另一个类的分组来打印一个类中的数组列表?
- android - Android Studio 3.3 错误
- python-3.x - Scrapy 蜘蛛不返回任何项目数据
- sql - Cycles 表(为每个更改创建行)
- typescript - 为什么字符串与这种联合类型冲突?
- javascript - 结合英文、日文和中文字母的正则表达式
- oracle - $$LAST_EXTRACT_DATE 不在 informatica 映射的参数文件中 - 通过 DAC 运行时