гистограмма с вертикальными линиями для каждого бара - PullRequest
1 голос
/ 12 февраля 2020
%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')

Я хочу построить горизонтальную гистограмму с first и second в качестве баров. Я хочу использовать столбец max для отображения вертикальной линии при соответствующих значениях, если другие столбцы.

Я управлял только гистограммой, как и сейчас.

Примерно так:

enter image description here

Любые подсказки о том, как чтобы достичь этого?

thx

1 Ответ

2 голосов
/ 12 февраля 2020

Я заменил 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')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...