首页 > 解决方案 > 条形图,每个条形都有垂直线

问题描述

%matplotlib inline
import matplotlib
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'index' : ['A', 'B', 'C', 'D'], 'first': [1.2, 1.23, 1.32, 1.08], 'second': [2, 2.2, 3, 1.08], 'max': [1.5, 3, 0.9, 'NaN']}).set_index('index')

我想绘制一个带有firstsecond作为条形的水平条形图。如果其他列,我想使用该max列在相应值处显示垂直线。

我现在只管理条形图。

像这样:

在此处输入图像描述

关于如何实现这一目标的任何提示?

谢谢

标签: pythonpandasmatplotlib

解决方案


我已经NaN用一些有限值替换了,然后你可以使用下面的代码

df = pd.DataFrame({'index' : ['A', 'B', 'C', 'D'], 'first': [1.2, 1.23, 1.32, 1.08], 
                   'second': [2, 2.2, 3, 1.08], 'max': [1.5, 3, 0.9, 2.5]}).set_index('index')

plt.barh(range(4), df['first'], height=-0.25, align='edge')
plt.barh(range(4), df['second'], height=0.25, align='edge', color='red')
plt.yticks(range(4), df.index);

for i, val in enumerate(df['max']):
    plt.vlines(val, i-0.25, i+0.25, color='limegreen')

在此处输入图像描述


推荐阅读