python matplotlib заполненные квадратные диаграммы

Кто-нибудь знает, можем ли мы построить заполненные диаграммы в python matplotlib? Я проверил http://matplotlib.org/api/pyplot_api.html, но не смог т найти полезную информацию об этом.


person MHardy    schedule 29.11.2013    source источник
comment
matplotlib.org/examples/pylab_examples/boxplot_demo2.html ?   -  person Fenikso    schedule 29.11.2013
comment
Можете ли вы показать нам, что вы пробовали?   -  person tacaswell    schedule 29.11.2013


Ответы (2)


Пример, который @Fenikso показывает пример того, как это сделать, но на самом деле он делает это неоптимальным образом.

По сути, вы хотите передать patch_artist=True в boxplot.

В качестве быстрого примера:

import matplotlib.pyplot as plt
import numpy as np

data = [np.random.normal(0, std, 1000) for std in range(1, 6)]
plt.boxplot(data, notch=True, patch_artist=True)

plt.show()

введите здесь описание изображения

Если вы хотите управлять цветом, сделайте что-то подобное:

import matplotlib.pyplot as plt
import numpy as np

data = [np.random.normal(0, std, 1000) for std in range(1, 6)]

box = plt.boxplot(data, notch=True, patch_artist=True)

colors = ['cyan', 'lightblue', 'lightgreen', 'tan', 'pink']
for patch, color in zip(box['boxes'], colors):
    patch.set_facecolor(color)

plt.show()

введите здесь описание изображения

person Joe Kington    schedule 29.11.2013
comment
Добавьте patch.set_alpha(0.5) в цикл для прозрачности. - person n1000; 26.01.2015
comment
@ n1000 — обратите внимание, что вы можете комбинировать вызовы set_‹blah› с помощью метода set. Например: patch.set(facecolor=color, alpha=0.5). - person Joe Kington; 26.01.2015
comment
Это здорово - спасибо! Я часами искал чистый способ сделать это. - person Arne Babenhauserheide; 29.05.2015
comment
Можно ли установить прозрачность для цвета лица, но не для линии поля? - person Ger; 19.10.2015

Это можно сделать с помощью Plotly Python API. График, сценарий и данные для этого графика находятся здесь< /а>.

Чтобы управлять цветом, вам нужно указать fillcolor. Здесь это не установлено; значение по умолчанию — заполнить его. Или вы можете сделать его прозрачным, добавив 'fillcolor':'rgba(255, 255, 255, 0)'. Вы также можете настроить стиль с помощью графического интерфейса.

import plotly
py = plotly.plotly(username='username', key='api_key')

from numpy.random import lognormal

x=[0]*1000+[1]*1000+[2]*1000
y=lognormal(0,1,1000).tolist()+lognormal(0,2,1000).tolist()+lognormal(0,3,1000).tolist()
s={'type':'box','jitter':0.5}
l={'title': 'Fun with the Lognormal distribution','yaxis':{'type':'log'}}

py.plot(x,y,style=s,layout=l)

Полное раскрытие: я в команде Plotly.

Boxplot

person Mateo Sanchez    schedule 20.01.2014