2015-03-06 2 views
9

Мне было интересно, не было ли у кого-то проблемы с флаером с надписью Matplotlib?Matplotlib ящики с коробкой не показываются

Я буквально копировать-вставить этот пример здесь в питон скрипт: http://blog.bharatbhole.com/creating-boxplots-with-matplotlib/

... но коробка сюжет летчикам (останцы) не отображаются. Кто-нибудь знает, почему я не могу их видеть? Извините, если это глупый вопрос, но я не могу на всю жизнь понять, почему это не работает.

## Create data 
np.random.seed(10) 
collectn_1 = np.random.normal(100, 10, 200) 
collectn_2 = np.random.normal(80, 30, 200) 
collectn_3 = np.random.normal(90, 20, 200) 
collectn_4 = np.random.normal(70, 25, 200) 

## combine these different collections into a list  
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4] 

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

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

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

Я также попытался добавить showfliers=True к последней строке этого сценария, но он по-прежнему не работает.

Это то, что я получаю в качестве выхода:

enter image description here

+0

я воспроизвел оригинала копирования вставки этого кода. У вас есть что-то еще загруженное? Графики сетки/фона/единичные шрифты кажутся нестандартными. – Tom

+0

Я использую ноутбук iPython ... Я должен был упомянуть об этом. Вот почему. Вы знаете, как вернуть форматирование к настройкам Matplotlib по умолчанию? –

ответ

2

Вы не могли бы видеть листовки, если лётчик маркер был установлен в None. page you linked to имеет for flier in bp['fliers']: цикл, который устанавливает летчик стиль маркеров, цвет и альфа:

import numpy as np 
import matplotlib.pyplot as plt 

np.random.seed(10) 
collectn_1 = np.random.normal(100, 10, 200) 
collectn_2 = np.random.normal(80, 30, 200) 
collectn_3 = np.random.normal(90, 20, 200) 
collectn_4 = np.random.normal(70, 25, 200) 

## combine these different collections into a list  
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4] 

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

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

# Create the boxplot 
bp = ax.boxplot(data_to_plot, showfliers=True) 

for flier in bp['fliers']: 
    flier.set(marker='o', color='#e7298a', alpha=0.5) 

plt.show() 

дающего

enter image description here

+0

Как ни странно, я видел выбросы, когда я запускал код OP, но не при запуске вашего кода. Вы хотите иметь также «marker = Нет»? Изменение его на 'marker = 'o'' генерирует ваш график (для меня). – jedwards

+1

@jedwards: Спасибо за хедз-ап. Я скопировал код с неправильной настройкой «marker». – unutbu

+0

Hm. Да, я не получаю такой сюжет. Я думаю, это потому, что у iPython-ноутбука, который я использую, есть странное форматирование, от которого я не могу избавиться. Есть ли простой способ получить значения летчика (outlier)? Я пробовал смотреть в 'bp ['fliers']', но я не могу найти способ извлечь из него значения. До тех пор, пока у меня есть ценности, я думаю, что смогу запечатлеть их над моим сюжетом. –

20

От внешнего вида вашего участка, кажется, вы импортировали seaborn модуля , Существует issue с летчиками boxplot matplotlib, которые не появляются при ввозе морского судна, даже если флаеры явно включены.Ваш код, кажется, работает нормально, когда Сиборн не импортируется:

Boxplot with fliers, no seaborn

Когда Сиборн импортируется, вы можете сделать следующее:

Решение 1:

Предполагая, что вы импортировали Сиборн так:

import seaborn as sns

вы можете использовать Сиборн функцию boxplot:

sns.boxplot(data_to_plot, ax=ax)

в результате:

Seaborn boxplot with fliers

Решение 2:

В случае, если вы хотите продолжать использовать функцию Matplotlib boxplot (от Automatic (whisker-sensitive) ylim in boxplots):

ax.boxplot(data_to_plot, sym='k.')

в результате:

Matplotlib boxplot with fliers

Смежные вопросы