我知道如何通过执行以下操作来用点覆盖垂直条形图:
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()
关于python - 如何在Python中用点覆盖水平条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65157018/