GGplot Barplot does not accept Y value?

别来无恙 提交于 2020-05-14 18:12:50

问题


I have a dataframe:

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

How do I plot log10(count) vs log10(reads) on a ggplot (barplot)?

I tried:

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

But it is not accepting y=log10(reads). How do I plot my y values?


回答1:


You can do something like this, but plotting the x axis, which is not continuous, with a log10 scale doesn't make sense for me :

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

enter image description here

If you only want an y axis with a log10 scale, just do :

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

enter image description here




回答2:


Use stat="identity":

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

You will actually get a warning with your approach:

Mapping a variable to y and also using stat="bin". With stat="bin", it will attempt to set the y value to the count of cases in each group. This can result in unexpected behavior and will not be allowed in a future version of ggplot2. If you want y to represent counts of cases, use stat="bin" and don't map a variable to y. If you want y to represent values in the data, use stat="identity". See ?geom_bar for examples. (Deprecated; last used in version 0.9.2)




回答3:


There's a direct way to do this, i.e. by using the geom_col() function. Just make a tiny adjustment to your code:

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

and it will give the same output as setting the stat argument to identity with geom_bar(). The thing is, geom_bar() uses count as default for stat, hence it will not take any variable for the y-axis. It will simply use the count, i.e, the number of occurrences of each value of the x-axis, for it's y-axis. I hope this answers your question.



来源:https://stackoverflow.com/questions/19389888/ggplot-barplot-does-not-accept-y-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!