在配对时改变盒线图的颜色

2024-10-04 03:26:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想根据方框图所代表的颜色来改变它们的颜色,这是成对分组的,所以我的问题是:

当方框图配对时,如何更改它们的颜色? 考虑到每对的第一个箱线图应该是蓝色的,第二个应该是红色的。在

这是密码,如果乱七八糟的话很抱歉:

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

我得到的是: Boxplots are all the same colour

我读过这个解决方案与这样一个事实有关,即plt.boxplot(...)返回一种dict对象,它包含创建的行的列表,因此修改每个框线图颜色的方法是访问索引?这个案子怎么样?在


Tags: 颜色hrpltaxfloatintsethb
1条回答
网友
1楼 · 发布于 2024-10-04 03:26:50

您可以按如下方式设置box plot返回dict的颜色

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

{{artist{and other attributes^}你也可以使用bpdict还包含['boxes', 'fliers', 'medians', 'means', 'whiskers', 'caps'],也可以根据需要进行更改。在

相关问题 更多 >