簡體   English   中英

熊貓箱圖x軸設置

[英]Pandas boxplot x-axis setting

我想創建一個在過去二十年中從四個不同站點收集的數據的箱線圖(即每個站點將有20y數據)。 這將在圖上產生80個盒子。 為了使圖形清晰,我希望每個框都偏移,並為每個站點設置不同的顏色框。 這將產生一系列重復的框(例如,site1,site2,site3,site3,site1,site2,site3,...的框)。 創建箱線圖不是問題; 抵消框似乎確實是一個問題。 例如

import numpy as np
import pandas as pd
from pylab import *

first  = pd.DataFrame(np.random.rand(10,5),columns=np.arange(0,5))
second = pd.DataFrame(np.random.rand(10,5),columns=np.arange(5,10))

fig = figure( figsize=(9,6.5) )
ax  = fig.add_subplot(111)

box1 = first.boxplot(ax=ax,notch=False,widths=0.20,sym='',rot=-45)
setp(box1['caps'],color='r',linewidth=2)
setp(box1['boxes'],color='r',linewidth=2)
setp(box1['medians'],color='r',linewidth=2)
setp(box1['whiskers'],color='r',linewidth=2,linestyle='-')

box2 = second.boxplot(ax=ax,notch=False,widths=0.20,sym='',rot=-45)
setp(box2['caps'],color='k',linewidth=2)
setp(box2['boxes'],color='k',linewidth=2)
setp(box2['medians'],color='k',linewidth=2)
setp(box2['whiskers'],color='k',linewidth=2,linestyle='-')

最初我希望Pandas會按列名索引x軸,但Pandas似乎是根據列位置索引x軸,這令人沮喪。 任何人都可以推薦一種抵消盒子的方法,這樣它們就不會疊在一起了嗎?

您需要指定條形的位置:

box1 = first.boxplot(ax=ax,notch=False,widths=0.20,sym='',rot=-45, positions=np.arange(0.0,4.0,1.0))
box2 = second.boxplot(ax=ax,notch=False,widths=0.20,sym='',rot=-45, positions=np.arange(0.3,4.3,1.0))

或者您可以將盒子移動到您喜歡的一側(這樣可以保持標簽居中):

disp = 0.15
for k in box1.keys():
    for line1,line2 in zip(box1[k],box2[k]):
        setp(line1,xdata=getp(line1,'xdata') - disp)
        setp(line2,xdata=getp(line2,'xdata') + disp)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM