2013-10-15 96 views
1

我有具有我在Y軸標繪上的箱線圖中R.我繪製日誌10(值)&變量在X軸的柱variablevalue的數據幀mdata。我想更改Y軸上的標籤,使其顯示原始值而不是log10(值)。變化箱線圖軸標籤

>mdata 

    ID   variable value 
    SJ5444_MAXGT coding 17455 
    SJ5426_MAXGT coding 17961 
    HR1383_MAXGT coding 17579 
    HR5522_MAXGT coding 17797 
CH30041_MAXGT coding 20099 
    SJ5438_MAXGT coding 17467 

我想Y軸範圍從分鐘(MDATA $值)到最大(MDATA $值)去的10000區間,但我不能這樣做。

下面是我的代碼:

boxplot(log10(as.numeric(value))~variable,data=mdata,yaxt="n",border="red",main="Boxplot: Seattle Seq Annotation") 

axis(side=2,labels=seq(min(mdata$value),max(mdata$value),10000),cex.axis=0.65,tck=-0.02,at=seq(min(mdata$value),max(mdata$value),by=10000)) 

我試圖弄清楚什麼是這裏的問題,但它不是很明顯。任何幫助,將不勝感激。

+0

side = 2創建Y軸。我想如果你有任何文本列,將data.frame轉換爲矩陣是個好主意。 –

+0

對不起,我想創建Y軸,我編輯了錯字。 –

+0

也把'as.matrix'帶出來。 –

回答

3

這個問題似乎是你的箱線圖是基於valuelog10,而您繪製軸使用原始值。有兩種方法可以解決這個問題。使用log10生成座標變換,或者在生成箱形圖進行座標變換時使用log="y"。下面是一些示例數據的圖示:

set.seed(123) 
x<-sample(100,1000,T) 
var<-sample(letters[1:5],1000,T) 

選擇編號1:

boxplot(log10(x) ~ var,yaxt="n") 
axis(side=2,labels=round(10^(seq(log10(min(x)),log10(max(x)),len=5)),2),at=seq(log10(min(x)),log10(max(x)),len=5)) 

enter image description here

選擇編號2:

boxplot(x ~ var,yaxt="n",log="y") 
axis(side=2,labels=seq(min(x),max(x),len=5),at=seq(min(x),max(x),len=5)) 

enter image description here

你可以得到蜱被對數或線性間隔與或者通過適當地規定at參數,例如方法中,該命令將放在與log="y"生成的情節均勻間隔的刻度線:

axis(side=2,labels=round(exp(seq(log(min(x)),log(max(x)),len=5)),2),at=exp(seq(log(min(x)),log(max(x)),len=5))) 
0

嘗試此(需要多個註釋,因此減少間隔):

axis(side=2,labels=seq(min(mdata$value), max(mdata$value),1000), 
     at=log10(seq(min(mdata$value),max(mdata$value),by=1000)))