【发布时间】:2021-12-04 11:06:43
【问题描述】:
我正在尝试绘制水平条形图,但是第二个数据列根本没有出现!
df = pd.DataFrame(dict(graph=["Indian","Egyptian","Emirati","Philippino","Syrian","Pakistani","Jordanian",
"British","Lebanese","American","Chinese","Ukrainian","Canadian","Russian",
"French","Saudi","Sudanese","Moroccan","Nigerian","Palestinian","German","Iranian",
"Italian","Turkish","Tunisian"],
n=[33060621,28185470,25327222,14033365,13895316,13335555,13067230,9065737,8871022,3914119,3875486,
3505868,3421358,3407623,3067701,2940321,2824929,2620922,2510789,2439167,1874219,1800495,1852571,1415189,1657462],
m=[13504,13762,9671,4568,4995,8016,6808,5559,5456,4137,2802,1011,2386,1806,4408,2002,1141,1530,916,992,1933,1651,
1628,1469,839]))
ind = np.arange(len(df))
width = 0.4
fig, ax = plt.subplots(figsize=(15,20))
ax.barh(ind, df.n, width, color='red', label='N')
ax.barh(ind + width, df.m, width, color='green', label='M')
ax.set(yticks=ind + width, yticklabels=df.graph, ylim=[2*width - 1, len(df)])
ax.legend()
plt.show()
https://drive.google.com/file/d/12TB_pArFWLbCI_ZhePkEfVMpnWxTj885/view?usp=sharing
我需要一些帮助:
- 为什么只显示一个数据列而隐藏另一个数据列?
- 我可以为每列设置不同的范围吗?比如第一列放上x轴,第二列放下x轴?
- 为什么国家名称要改了?
【问题讨论】:
-
m列的值太小,无法与n列显示在同一轴上。 -
一行来统治它们:
ax = df.set_index('graph').plot(kind='barh', figsize=(15, 8), logx=True)plot 使用pandas 1.3.3,matplotlib 3.4.3直接使用pandas.DataFrame.plot绘制数据框。
标签: python pandas matplotlib bar-chart axis