python matplotlib填充的boxplots

时间:2013-11-29 15:33:48

标签: python matplotlib visualization boxplot

有没有人知道我们是否可以在python matplotlib中绘制填充的箱形图? 我已经检查了http://matplotlib.org/api/pyplot_api.html,但我找不到有用的信息。

2 个答案:

答案 0 :(得分:30)

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

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

答案 1 :(得分:2)

您可以使用Plotly Python API执行此操作。此图表的图表,脚本和数据为here

要控制颜色,您需要规定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