python - 如何在Python中用点覆盖水平条形图?

标签 python pandas matplotlib

我知道如何通过执行以下操作来用点覆盖垂直条形图:

import pandas as pd
df = pd.DataFrame({'Types':['A','B','C'],
                   'Val1':[-10,-15,-5],
                   'Val2':[-6,-8,-2]})
df=df.set_index('Types')
ax = df['Val1'].plot.bar(figsize=(10,7))
df['Val2'].plot(style='o',color=[1,0.8,0])

效果很好。但是我如何生成这个带有水平条和相应点的图表呢?如果我更改上面的行并使用 barh ,则条形会按我想要的方式翻转,但叠加点不再有效。有没有简单的解决方案?

最佳答案

水平条形图可以使用df.plot.barh实现,但重叠散点图则使用Zorder控制。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({'Types':['A','B','C'],
                   'Val1':[-10,-15,-5],
                   'Val2':[-6,-8,-2]})

fig, ax = plt.subplots()
df.plot.barh(y='Val1', figsize=(10,7), ax=ax, zorder=1)
ax.scatter(df['Val2'].tolist(), [0,1,2], color=[1,0.8,0], zorder=2, label='Val2')
ax.legend()
ax.set_yticklabels(df['Types'])
plt.show()

enter image description here

关于python - 如何在Python中用点覆盖水平条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65157018/

相关文章:

python - 如何使用pyqt获取表中的选定项目?

pandas - 使用索引作为循环变量连接多个数据帧

python - 使用 SymPy 矩阵求根

Python:从 numpy 矩阵创建二维直方图

python - float() 参数必须是字符串或数字,而不是 '_sre.SRE_Match'

python - Django - 'module' 对象不可调用

python - 在 Python MySQL 中执行 INSERT 查询的正确方法是什么?

python - 如何在散点图的顶部绘制附加点?

python - 如何在pandas中动态创建连续变量的容器

python - set_yticks 和 ylim 用于分类变量