[英]Out of Index Error when plotting 3 boxplots side-by-side with Python matplotlib
我正在嘗試並排生成 3 個箱線圖,每個箱線圖都有不同的顏色。 下面的代碼顯示了我的嘗試,但我收到了這個不尋常的“索引外”錯誤。 似乎第三個箱線圖的fliers
索引指定錯誤,但我不知道如何解決它,因為我正在嘗試並排繪制 3 個箱線圖 有人能告訴我如何避免這個錯誤嗎?
謝謝,
from matplotlib.pyplot import (plot, savefig, xlim, figure,
ylim, legend, boxplot, setp,
axes, xlabel, ylabel, xticks,
axvline)
success_list_data=[[1.,2.,3.,4.,5.],[1.,2.,3.,4.,5.],[1.,2.,3.,4.,5.]]
# function for setting the colors of the box plots pairs
def setBoxColors(bp):
setp(bp['boxes'][0], color='red')
setp(bp['caps'][0], color='red')
setp(bp['caps'][1], color='red')
setp(bp['whiskers'][0], color='red')
setp(bp['whiskers'][1], color='red')
setp(bp['fliers'][0], color='red')
setp(bp['fliers'][1], color='red')
setp(bp['medians'][0], color='red')
setp(bp['boxes'][1], color='green')
setp(bp['caps'][2], color='green')
setp(bp['caps'][3], color='green')
setp(bp['whiskers'][2], color='green')
setp(bp['whiskers'][3], color='green')
setp(bp['fliers'][2], color='green')
setp(bp['fliers'][3], color='green')
setp(bp['medians'][1], color='green')
setp(bp['boxes'][2], color='purple')
setp(bp['caps'][4], color='purple')
setp(bp['caps'][5], color='purple')
setp(bp['whiskers'][4], color='purple')
setp(bp['whiskers'][5], color='purple')
setp(bp['fliers'][4], color='purple')
setp(bp['fliers'][5], color='purple')
setp(bp['medians'][2], color='purple')
def make_boxplots(success_list_data):
fig = figure()
ax = axes()
bp = boxplot(success_list_data, positions = [1, 2, 3], widths = 0.6)
setBoxColors(bp)
# label the x-ticks.
plt.xticks([1, 2, 3],
['Delta','Diag. Normal', 'Laplace'])
# label for the x-axis.
plt.xlabel('Guide Type')
# label for the y-axis.
plt.ylabel('Test Success Rate')
# this generates an error
>>> make_boxplots(success_list_data)
>>> Traceback (most recent call last):
File "<ipython-input-7-7d712300046b>", line 1, in <module>
make_boxplots(success_list_data)
File "<ipython-input-6-16ffa2fcfdd4>", line 37, in make_boxplots
setBoxColors(bp)
File "<ipython-input-6-16ffa2fcfdd4>", line 18, in setBoxColors
setp(bp['fliers'][3], color='green')
IndexError: list index out of range
這是可以正常工作的代碼。
from matplotlib.pyplot import (plot, savefig, xlim, figure,
ylim, legend, boxplot, setp,
axes, xlabel, ylabel, xticks,
axvline)
# Need to import matplotlib.pyplot since you are using it below.
import matplotlib.pyplot as plt
success_list_data=[[1.,2.,3.,4.,5.],[1.,2.,3.,4.,5.],[1.,2.,3.,4.,5.]]
# function for setting the colors of the box plots pairs
def setBoxColors(bp):
setp(bp['boxes'][0], color='red')
setp(bp['caps'][0], color='red')
setp(bp['caps'][1], color='red')
setp(bp['whiskers'][0], color='red')
setp(bp['whiskers'][1], color='red')
setp(bp['fliers'][0], color='red')
setp(bp['fliers'][1], color='red')
setp(bp['medians'][0], color='red')
setp(bp['boxes'][1], color='green')
setp(bp['caps'][2], color='green')
setp(bp['caps'][3], color='green')
setp(bp['whiskers'][2], color='green')
setp(bp['whiskers'][3], color='green')
setp(bp['fliers'][2], color='green')
# setp(bp['fliers'][3], color='green')
setp(bp['medians'][1], color='green')
setp(bp['boxes'][2], color='purple')
setp(bp['caps'][4], color='purple')
setp(bp['caps'][5], color='purple')
setp(bp['whiskers'][4], color='purple')
setp(bp['whiskers'][5], color='purple')
# setp(bp['fliers'][4], color='purple')
# setp(bp['fliers'][5], color='purple')
setp(bp['medians'][2], color='purple')
def make_boxplots(success_list_data):
fig = figure()
ax = axes()
bp = boxplot(success_list_data, positions = [1, 2, 3], widths = 0.6)
setBoxColors(bp)
# label the x-ticks.
plt.xticks([1, 2, 3],
['Delta','Diag. Normal', 'Laplace'])
# label for the x-axis.
plt.xlabel('Guide Type')
# label for the y-axis.
plt.ylabel('Test Success Rate')
make_boxplots(success_list_data)
這是bp['fliers']
的輸出:
[<matplotlib.lines.Line2D at 0x7fa8e0d41710>,
<matplotlib.lines.Line2D at 0x7fa8e0d52a10>,
<matplotlib.lines.Line2D at 0x7fa8e0d64cd0>]
3 及以上的索引將超出索引范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.