2013-10-15 84 views
5

我有一個數據幀:GGplot Barplot不接受Y值?

>picard 
count reads 
1 20681318 
2  3206677 
3  674351 
4  319173 
5  139411 
6  117706 

如何繪製LOG10(計數)VS LOG10(讀取)在ggplot(barplot)?

我嘗試:

ggplot(picard) + geom_bar(aes(x=log10(count),y=log10(reads))) 

但它不接受Y =日誌10(讀取)。我如何繪製我的y值?

回答

5

你可以做這樣的事情(不推薦使用上次在0.9.2版本中使用),但繪製x軸,這是不連續的,具有日誌10規模不會對我意義:

ggplot(picard) + 
    geom_bar(aes(x=count,y=reads),stat="identity") + 
    scale_y_log10() + 
    scale_x_log10() 

enter image description here

如果你只想用LOG10規模的Y軸,只是做:

ggplot(picard) + 
    geom_bar(aes(x=count,y=reads),stat="identity") + 
    scale_y_log10() 

enter image description here

+0

有沒有辦法增加酒吧的寬度? –

+0

@ user2703967是的,使用'geom_bar()'的'width'參數。 – juba

+0

由於數據的原因,圖形交錯。我可以使用geom_density()來繪製這些值嗎?我可能需要設置自己的密度,但我不知道該怎麼做。 –

2

使用stat="identity"

ggplot(picard) + geom_bar(aes(x=log10(count),y=log10(reads)), stat="identity") 

你實際上會得到一個警告,你們的做法:

映射到y的變量,也採用STAT = 「BIN」。 當stat =「bin」時,它將嘗試將y值設置爲每個組中的個案數。 這可能會導致意外的行爲,並且不會在未來版本的ggplot2中允許。 如果您希望y表示個案的計數,請使用stat =「bin」並且不要將變量映射到y。 如果您希望y表示數據中的值,請使用stat =「identity」。 請參閱?geom_bar以獲取示例。

0

有一種直接的方法可以做到這一點,即通過使用geom_col()函數。只是做一個小小的調整,你的代碼:

ggplot(picard) + geom_col(aes(x=log10(count), y=log10(reads))) 

,它會給出相同的輸出與geom_bar()設置stat參數identity。事情是,geom_bar()使用count作爲stat的默認值,因此它不會對y軸採取任何變量。它將簡單地使用計數,即x軸的每個值的出現次數,因爲它是y軸。我希望這回答了你的問題。