Цикл для создания нескольких графиков в matplotlib из одного кадра данных? - PullRequest
2 голосов
/ 11 февраля 2020

Я хочу построить 3 графика отдельно от df:

import pandas as pd
import matplotlib.pyplot as plt
d = {'a1': [1,2,3,1,2,3,1,2,3],
     'a2': ['a', 'a', 'a','b','b','b','c','c','c'],
     'a3': [100,200,300,700,800,900,10,20,30]}

df=pd.DataFrame(d)
df

a1  a2  a3
1   a   100
2   a   200
3   a   300
1   b   700
2   b   800
3   b   900
1   c   10
2   c   20
3   c   30

один график для a, один для b и один для c, используя al oop:

Вот пример для:

df1=df[df['a2'] == 'a']
df1.plot(x='a1', y='a3', kind='bar')
plt.title("my graph for a", fontsize=12)
plt.show()

1 Ответ

3 голосов
/ 11 февраля 2020

Я бы посоветовал искать петли в целом. У вас есть все, что вам нужно в вашем примере, вам просто нужно бросить его в течение l oop итерации по ['a', 'b', 'c'] или df['a2'].unique():

for x in ['a', 'b', 'c']:
    ...

Вы обнаружите, что бары перекрываются, если Вы go вперед с этим подходом. Вместо этого вы можете расположить свой фрейм данных и график без значения l oop. Вам нужно будет перегруппировать ваши данные в группы в виде столбцов:

pd.pivot_table(data=df, index='a1', columns='a2', values='a3').plot.bar()

Однако вам может быть предпочтительнее seaborn. Вы можете использовать barlot в одной строке:

import seaborn as sns
sns.barplot(data=df, x='a1', y='a3', hue='a2')

enter image description here

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