我發現它在this question on SO之前已經被詢問過了。儘管不是完全相同,但另一個問題包含答案!
在matplotlib 1.4中可能是一個更快的方法來做到這一點,但現在在另一個線程中的答案似乎是最好的方式。
編輯: 事實證明,我不能使用他們的方法,因爲我有plt.boxplot(data, patch_artist=True)
得到所有其他花哨的東西。
所以我不得不求助於以下醜陋的最終解決方案:
N = 12 #number of my plots
upperBoxPoints= []
for d in data:
upperBoxPoints.append(np.percentile(d, 75))
w = 0.5 # i had to tune the width by hand
ind = range(0,N) #compute the correct placement from number and width
ind = [x + 0.5+(w/2) for x in ind]
for i in range(N):
rect = ax.bar(ind[i], menMeans[i], w, color=color[i], edgecolor='gray', linewidth=2, zorder=10)
# ind[i] position
# menMeans[i] hight of box
# w width
# color=color[i] as you can see i have a complex color scheme, use '#AAAAAAA' for colors, html names won't work
# edgecolor='gray' just like the other one
# linewidth=2 dito
# zorder=2 IMPORTANT you have to use at least 2 to draw it over the other stuff (but not to high or it is over your horizontal orientation lines
而最終的結果:
你能解釋一下你想要的陰謀是什麼樣子?值爲零的點不會是異常值,除非中位數遠離零,在這種情況下,boxplot將顯示爲異常值是正確的。你是否嘗試做一個距離的箱形圖?它以什麼方式不做你想要的? – BrenBarn
@BrenBarn增加了一個情節(即使我沒有在評論中叫出你的名字,你會得到一個通知嗎?) –
從這個情節很難說,但是我沒有看到任何零點值。你確定實際上有零值嗎? boxplot部分的尺寸是完全算法的,並且該算法定義了boxplot的「含義」是什麼。如果你想要別的東西,也許你不想要一個boxplot,但一些自定義的box-like情節。 – BrenBarn