2015-03-31 35 views
0

我得到了一些數據(名爲result.df),它看起來像下面這樣:geom_point點手動縮放

orgaName     abundance   pVal   score   
    A      3   9.998622e-01  1.795338e-04 
    B      2   9.999790e-01  1.823428e-05 
    C      1   2.225074e-308 3.076527e+02 
    D      1   3.510957e-01  4.545745e-01 

等等...

我現在所描繪的是:

p1 <- ggplot(result.df, aes(log2(abundance), (1-pVal), label=orgaName)) + 
    ylab("1 - P-Value")+ 
    xlab("log2(abundance)")+ 
    geom_point(aes(size=score))+ 
    ggtitle(colnames(case.count.matrix)[i])+ 
    geom_text(data=subset(result.df, pVal < 0.05),hjust=.65, vjust=-1.2,size=2.5)+  
    geom_hline(aes(yintercept=.95), colour="blue", linetype="dashed")+ 
    theme_classic() 

一切工作正常,看起來相當好。然而,我想要的是通過縮放點尺寸

geom_point(aes(size=score))+ 

將按照固定值進行縮放。所以這個傳說應該以十進制對數進行縮放,但分數應該保持不變。這樣低分幾乎消失,大分數在不同「結果」之間的點數相差不大。

編輯

上@roman和@ vrajs5的意見經檢查,我能夠產生這樣new plot一個陰謀。 使用下面的代碼:

ggplot(result.df, aes(log2(abundance), (1-pVal), label=orgaName)) + 
    ylab("1 - P-Value")+ 
    xlab("log2(abundance)")+ 
    geom_point(aes(size=score))+ 
    ggtitle(colnames(case.count.matrix)[i])+  
    #geom_text(data=subset(result.df, pVal < 0.05 & log2(abundance) > xInt),hjust=.65, vjust=-1.2,size=2.5)+ 
    geom_text(data=subset(result.df, pVal < 0.05),hjust=.65, vjust=-1.2,size=2.5)+ 
    geom_hline(aes(yintercept=.95), colour="blue", linetype="dashed")+ 
    #geom_vline(aes(xintercept=xInt), colour="blue", linetype="dashed")+ 
    #geom_text(data=subset(result.df, pVal > 0.05 & log2(abundance) > xInt),alpha=.5,hjust=.65, vjust=-1.2,size=2)+ 
    #geom_text(data=subset(result.df, pVal < 0.05 & log2(abundance) < xInt),alpha=.5,hjust=.65, vjust=-1.2,size=2)+ 
    theme_classic() + 
    scale_size(range=c(2,12),expand=c(2,0),breaks=c(0,1,10,100,1000,1000000),labels=c(">=0",">=1",">=10",">=100",">=1000",">=1000000"),guide="legend") 

正如你所看到的,在休息了介紹和標註爲intendet。但圖例中的磅值不反映圖中的磅值。任何想法如何解決這個問題?

+1

您可以通過指定中斷,限制,標籤來調整[scale_size](http://docs.ggplot2.org/current/scale_size.html)... – 2015-03-31 08:13:34

回答

1

正如@Roman提到的,如果你使用scale_size你可以指定大小的限制..

以下是如何控制點

的大小的例子
result.df = read.table(text = 'orgaName     abundance   pVal   score   
A      3   9.998622e-01  1.795338e-04 
B      2   9.999790e-01  1.823428e-05 
C      1   2.225074e-308 3.076527e+02 
D      1   3.510957e-01  4.545745e-01 
E      3   2.510957e-01  2.545745e+00 
F      3   1.510957e-02  2.006527e+02 
G      2   5.510957e-01  3.545745e-02', header = T) 

library(ggplot2) 
ggplot(result.df, aes(log2(abundance), (1-pVal), label=orgaName)) + 
    ylab("1 - P-Value")+ 
    xlab("log2(abundance)")+ 
    geom_point(aes(size=score))+ 
    #ggtitle(colnames(case.count.matrix)[i])+ 
    geom_text(data=subset(result.df, pVal < 0.05),hjust=.65, vjust=-1.2,size=2.5)+  
    geom_hline(aes(yintercept=.95), colour="blue", linetype="dashed")+ 
    theme_classic() + 
    scale_size(range = c(2,12)) 

輸出圖形是 enter image description here

+0

感謝您的快速解答,但也許我沒有說明我的問題清楚足夠。如果我現在想繪製另一個result.df(包含不同的值),最大的點可能不會顯示300分,而是3000分中的一個,比方說。我想要的是一個固定的分數的傳說,使得(至少在某種程度上)點大小可以通過不同的情節進行比較。這也是可能的範圍?此刻,我正在嘗試通過添加一個像這樣的手動縮放:'continuous_scale(breaks = c(「0」,「1」,「10」,「100」,「1000」),labels = c(「0」 ,「1」,「10」,「100」,「1000」),scale_name =「分數」),但它不起作用。 – 2015-03-31 09:07:02

+1

是使用scale_size範圍和中斷可以確保點繪製得很好。但是你必須確保你根據輸入設置來設置參數。 – vrajs5 2015-03-31 09:12:17

+0

嗯我不完全得到它呢...我編輯了原始問題,但不能解決在傳說中的點大小問題... – 2015-03-31 11:08:17