第一个框线图缺失或不可见

2024-10-04 01:27:51 发布

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

为什么第一个箱线图丢失?我们希望有24个框线图,但是只有23个显示在图像中。我要换谁的尺寸才能让人看得见?我试过改变人物的大小,但还是一样。在

Enero Boxplot is out of the square figure

不确定是否有用,但代码如下:

def obtenerBoxplotsAnualesIntercalados(self, directorioEntrada, directorioSalida):
    meses = ["Enero","Febrero","Marzo","Abril","Mayo","Junio", "Julio", "Agosto","Septie.","Octubre","Noviem.","Diciem."]
    ciudades = ["CO","CR"]      
    anios = ["2011", "2012", "2013"]
    for anio in anios:
        fig = plt.figure()
        fig.set_size_inches(14.3, 9)
        ax = plt.axes()
        plt.hold(True)
        bpArray = []
        i=0
        ticks = []
        for mes in range(len(meses)):
            archivoCO = open(directorioEntrada+"/"+"CO"+"-"+self.mesStr(mes+1)+"-"+anio, encoding = "ISO-8859-1")
            archivoCR = open(directorioEntrada+"/"+"CR"+"-"+self.mesStr(mes+1)+"-"+anio, encoding = "ISO-8859-1")
            datosCOmes = self.obtenerDatosmensuales(archivoCO)
            datosCRmes = self.obtenerDatosmensuales(archivoCR)
            data = [    [int(float(datosCOmes[2])), int(float(datosCOmes[0])), int(float(datosCOmes[1]))],
                        [int(float(datosCRmes[2])), int(float(datosCRmes[0])), int(float(datosCRmes[1]))] ]
            bpArray.append(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)
        self.setBoxColors(bpArray)
        plt.title('Variación de temperatura mensual Caleta Olivia-Comodoro Rivadavia. Año '+anio)
        plt.savefig(directorioSalida+"/asdasd"+str(anio)+".ps", orientation='landscape', papertype='A4' )

Tags: selfpltaxfloatintsethbmes
1条回答
网友
1楼 · 发布于 2024-10-04 01:27:51

你的箱线图在那里,但它是隐藏的。这就再现了你的问题:

import matplotlib
import numpy as np

data = np.random.normal(10,2,100*24).reshape(24,-1) # let's get 12 pairs of arrays to plot
meses = ["Enero","Febrero","Marzo","Abril","Mayo","Junio", "Julio", "Agosto","Septie.","Octubre","Noviem.","Diciem."]

ax = plt.axes()
plt.hold(True)

i=0

ticks = []

for mes in range(0,len(meses)):
    plt.boxplot(data, positions=[i,i+1], widths=0.5)
    ticks.append(i+0.5)
    i+=2

ax.set_xticklabels(meses)
ax.set_xticks(ticks)    

plt.show()

请注意,您将位置定义为从0到12,但将ticks附加为range(0,12) + 0.5。因此,当您稍后执行set_xticks(ticks)操作时,x轴将从0.5开始,但第一个框线图绘制在位置0。在

wrong

我稍微修改了您的代码,以产生您想要的结果:

^{pr2}$

fixed

相关问题 更多 >