Как построить график такого типа (панель ошибок)? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть фрейм данных:

import pandas as pd
import numpy as np

df = pd.read_csv(r'https://exploratory.io/data/kanaugust/2016-California-Election-Data-oTv4Hgd1UT/2016%20California%20Election%20Data.csv')

df['cluster'] = [3, 3, 1, 2, 1, 1, 3, 1, 1, 2, 1, 3, 2, 1, 1, 1, 2, 1, 3, 1, 3, 1, 3, 2, 1, 2, 3, 3, 2, 2, 1, 1, 2, 2, 2, 2, 2, 3, 2, 2, 3, 3, 3, 3, 1, 1, 1, 2, 3, 2, 1, 1, 1, 1, 1, 2, 3, 1]

df = df.drop(columns=['COUNTY_NAME', 'PARTY_NAME']).groupby('cluster').agg(['mean', 'std'])
df

enter image description here

Я хотел бы построить его график, как этот:

enter image description here

Для каждого кластера каждая линия рисуется как линия, соединяющая три точки.В середине - среднее значение столбца, нижняя точка - среднее - стандартное, а верхнее среднее - стандартное.Например, для запрета на одноразовые пластиковые пакеты и кластера 3 нижняя точка - 0,647902 - 0,065703, средняя точка - 0,647902, а верхняя точка - 0,647902 + 0,065703.

В каждой позиции x все три кластера должнырисуйте, каждый разным цветом.

matplotlib errorbar может быть полезен для этой цели, но я не знаю, как использовать его для построения графика, как я показал выше.Может быть, морское добро тоже хорошо?

Как нарисовать такой график?

1 Ответ

1 голос
/ 23 апреля 2019

Один из способов сделать это с errorbar :

df = df.drop(columns=['COUNTY_NAME', 'PARTY_NAME']).groupby('cluster').agg(['mean', 'std'])

# change categories to index
new_df = df.T.unstack()

fig, ax = plt.subplots(1,1, figsize=(16,10))
for i in range(1,4):
    ax.errorbar(range(len(new_df)), new_df[new_df.columns[2*i-2]],
                yerr=new_df[new_df.columns[2*i-1]], fmt='x', 
                label=f'Cluster {i}')

ax.set_xticks(range(len(new_df)))
ax.set_xticklabels(new_df.index)
ax.legend()
plt.show()

Вывод не идеален, но я оставляю вам детали:

enter image description here

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