Несколько блок-графиков на одном графике с использованием matplotlib с подгруппами

#python

#python

Вопрос:

У меня есть 2 поля «market_cap» и «debt_ratio», где я использую функцию pandas cut, чтобы создать 5 подгрупп на основе market_cap.

Я заинтересован в создании 5 блок-графиков (для каждой подгруппы), но отображаемые данные — это debt_ratio .

 cleaned_data = ( cleaned_data.groupby( pd.cut( cleaned_data['market_cap_(in_us_$)'], 5      ) )['market_debt_to_capital_ratio'] )

# Create a figure instance
fig = plt.figure( 1, figsize = ( 9, 5 ) )

# Create an axes instance
ax = fig.add_subplot( 111 )

# Create the boxplot
bp = ax.boxplot( cleaned_data )

# Save the figure
fig.savefig( 'fig1.png', bbox_inches = 'tight' )
 

Однако я получаю следующую ошибку

 File "C:...box_plots.py", line 29, in <module>
bp = ax.boxplot( cleaned_data[1] )
File "C:Python27libsite-packagespandascoregroupby.py", line 489, in __getitem__
raise NotImplementedError
NotImplementedError
 

Комментарии:

1. Вы уверены, что это как-то связано с фактическим построением графика? если вы разместите a = cleaned_data[1] в качестве второй строки кода — будет ли это выдавать исключение?

2. Приведенный ниже ответ решил мою проблему. Кроме того, я не совсем понимаю ваше предложение о размещении «a = cleaned_data [1]». Я снова запускаю приведенный выше код, и теперь я получаю: File «C:…box_plots.py «, строка 32, в файле <module> bp = ax.boxplot(cleaned_data ) «C:Python27libsite-packagesmatplotlibaxes.py «, строка 5967, в boxplot, если нет hasattr(x[0], ‘ len ‘): Файл «C:Python27libsite-packagespandascoregroupby.py «строка 489, в getitem вызывает NotImplementedError

Ответ №1:

Вы можете создать блок-график, добавив отдельные группы в список.

 test = []
for name, group in cleaned_data:
    test.append(group)
boxplot(test)