配对时更改箱线图的颜色
Changing the colour of a boxplot when its paired
我想根据它们代表的内容更改箱线图的颜色,这是成对分组的,所以我的问题是:
配对后如何更改箱线图的颜色?
考虑到每对的第一个箱线图应该是蓝色的,第二个箱线图应该是红色的。
这是代码,如有混乱请见谅:
def obtenerBoxplotsAnuales(self, directorioEntrada, directorioSalida):
meses = ["Enero","Febrero","Marzo","Abril","Mayo","Junio", "Julio", "Agosto","Septie.","Octubre","Noviem.","Diciem."]
ciudades = ["CO","CR"]
anios = ["2011", "2012", "2013"]
boxPlotMensual = []
fig = plt.figure()
fig.set_size_inches(14.3, 9)
ax = plt.axes()
plt.hold(True)
for anio in anios:
boxPlotAnual = []
i=0
ticks = []
for mes in range(len(meses)):
data1 = getSomeData()
data2 = getSomeData()
data = [ [int(float(data1[2])), int(float(data1[0])), int(float(data1[1]))],
[int(float(data2[2])), int(float(data2[0])), int(float(data2[1]))] ]
plt.boxplot(data, positions=[i,i+1], widths=0.5)
ticks.append(i+0.5)
i=i+2
hB, = plt.plot([1,1],'b-')
hR, = plt.plot([1,1],'r-')
plt.legend((hB, hR),('Caleta', 'Comodoro'))
hB.set_visible(False)
hR.set_visible(False)
ax.set_xticklabels(meses)
ax.set_xticks(ticks)
plt.savefig(directorioSalida+"/asdasd"+str(anio)+".ps", orientation='landscape', papertype='A4' )
这是我得到的:
我读到解决方案与以下事实有关 plt.boxplot(...)
returns 一种包含创建的行列表的字典对象,因此可以修改每行的颜色箱线图可以访问索引吗?这种情况如何?
您可以从箱线图中设置 return 字典的颜色,如下所示,
import matplotlib.pyplot as plt
import numpy as np
nboxes = 10
# fake up some data
spread= np.random.rand(50,nboxes) * 100
center = np.ones((25,nboxes)) * 50
flier_high = np.random.rand(10,nboxes) * 100 + 100
flier_low = np.random.rand(10,nboxes) * -100
data =np.concatenate((spread, center, flier_high, flier_low), 0)
# plot figure
plt.figure()
bp = plt.boxplot(data)
for i, box in enumerate(bp['boxes']):
#Colour alternate boxes blue and red
if i%2:
box.set_color('blue')
else:
box.set_color('red')
plt.show()
循环遍历 bp['boxes']
中的所有框并使用方法 set_color
(您也可以 box.set_markerfacecolor
和其他标准 matplotlib 艺术家属性)。 bp
字典还包含 ['boxes', 'fliers', 'medians', 'means', 'whiskers', 'caps']
也可以根据需要更改。
我想根据它们代表的内容更改箱线图的颜色,这是成对分组的,所以我的问题是:
配对后如何更改箱线图的颜色? 考虑到每对的第一个箱线图应该是蓝色的,第二个箱线图应该是红色的。
这是代码,如有混乱请见谅:
def obtenerBoxplotsAnuales(self, directorioEntrada, directorioSalida):
meses = ["Enero","Febrero","Marzo","Abril","Mayo","Junio", "Julio", "Agosto","Septie.","Octubre","Noviem.","Diciem."]
ciudades = ["CO","CR"]
anios = ["2011", "2012", "2013"]
boxPlotMensual = []
fig = plt.figure()
fig.set_size_inches(14.3, 9)
ax = plt.axes()
plt.hold(True)
for anio in anios:
boxPlotAnual = []
i=0
ticks = []
for mes in range(len(meses)):
data1 = getSomeData()
data2 = getSomeData()
data = [ [int(float(data1[2])), int(float(data1[0])), int(float(data1[1]))],
[int(float(data2[2])), int(float(data2[0])), int(float(data2[1]))] ]
plt.boxplot(data, positions=[i,i+1], widths=0.5)
ticks.append(i+0.5)
i=i+2
hB, = plt.plot([1,1],'b-')
hR, = plt.plot([1,1],'r-')
plt.legend((hB, hR),('Caleta', 'Comodoro'))
hB.set_visible(False)
hR.set_visible(False)
ax.set_xticklabels(meses)
ax.set_xticks(ticks)
plt.savefig(directorioSalida+"/asdasd"+str(anio)+".ps", orientation='landscape', papertype='A4' )
这是我得到的:
我读到解决方案与以下事实有关 plt.boxplot(...)
returns 一种包含创建的行列表的字典对象,因此可以修改每行的颜色箱线图可以访问索引吗?这种情况如何?
您可以从箱线图中设置 return 字典的颜色,如下所示,
import matplotlib.pyplot as plt
import numpy as np
nboxes = 10
# fake up some data
spread= np.random.rand(50,nboxes) * 100
center = np.ones((25,nboxes)) * 50
flier_high = np.random.rand(10,nboxes) * 100 + 100
flier_low = np.random.rand(10,nboxes) * -100
data =np.concatenate((spread, center, flier_high, flier_low), 0)
# plot figure
plt.figure()
bp = plt.boxplot(data)
for i, box in enumerate(bp['boxes']):
#Colour alternate boxes blue and red
if i%2:
box.set_color('blue')
else:
box.set_color('red')
plt.show()
循环遍历 bp['boxes']
中的所有框并使用方法 set_color
(您也可以 box.set_markerfacecolor
和其他标准 matplotlib 艺术家属性)。 bp
字典还包含 ['boxes', 'fliers', 'medians', 'means', 'whiskers', 'caps']
也可以根据需要更改。