Сюжеты Matplotlib box - построение сгруппированных значений с помощью цикла for - PullRequest
1 голос
/ 15 марта 2019

Я пытаюсь построить блочные графики, сгруппированные по уникальным значениям столбцов, используя цикл for , не зная количества уникальных значений в этом столбце.

Пример кода ниже (без цикла for) и требуемый выход.

import pandas as pd
from numpy import random
import matplotlib.pyplot as plt

#------------------------------ Preparing the data frame -------------------------------#

df = pd.DataFrame(data = random.randn(5,4), index = ['A','B','C','D','E'],
columns = ['W','X','Y','Z'])

df['W'] = ['10/01/2018 12:00:00','10/03/2018 13:00:00',
           '10/03/2018 12:30:00','10/04/2018 12:05:00',
           '10/08/2018 12:00:15']

df['W']=pd.to_datetime(df['W'])

df['Entity'] = ['C201','C201','C201','C202','C202']
print(df)

#-----------------------------------Plotting the data ----------------------------------#

fig, ax = plt.subplots()

data_to_plot = [df['Y'][df['Entity']=='C201'], df['Y'][df['Entity']=='C202']]

# Create the boxplot
bp = ax.boxplot(data_to_plot, showfliers=False)
ax.set_xticklabels(['C201' ,'C202'])      
plt.show()

Требуемый выход: enter image description here

1 Ответ

1 голос
/ 15 марта 2019

Не могли бы вы сделать что-то подобное?

#-----------------------------------Plotting the data ----------------------------------#

fig, ax = plt.subplots()

data_to_plot = []
tick_labels = []
for entity in df['Entity'].unique():
    data_to_plot.append(df['Y'][df['Entity']==entity])
    tick_labels.append(entity)

# Create the boxplot
bp = ax.boxplot(data_to_plot, showfliers=False)
ax.set_xticklabels(tick_labels)      
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...