в Python библиотек matplotlib заполнены коробчатых диаграмм

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

2 ответов


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

в основном, вы хотите пройти patch_artist=True to 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()

enter image description here

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

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()

enter image description here


вы можете сделать это с помощью Plotly Python API. График, скрипт и данные для этого графика являются здесь.

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

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