GGplot2:绘制直方图,对数刻度但线性值?

时间:2011-08-06 09:34:39

标签: r logging ggplot2 scale

我在R中用ggplot2创建了一个直方图,需要一个对数间隔的x轴,但是想保留我的线性值。

这可能吗?

到目前为止我的公式是:

ggplot(f0peruttnq, aes(f0)) +
  geom_histogram(alpha=0.3, fill='white', colour='black')

稍微偏离主题:我还尝试在我的直方图上叠加一条正常曲线,但是如果我想在x轴上保持计数而不是密度值,那么geom_density()似乎不起作用。当我尝试+ stat_function(fun = dnorm)时没有任何改变!

提前感谢任何有用的提示!

现在正在运作!

我使用的公式:

ggplot(data, aes(V2)) + geom_histogram(alpha=0.3, fill='white', colour='black')+scale_x_log10(breaks=c(50,100,150,200,250),labels=c(50,100,150,200,250))

感谢您的耐心: - )

2 个答案:

答案 0 :(得分:4)

你的意思是不转换你的数据而只改变情节吗?如果是这样,很容易:

来自ggplot2 help pages的修改示例:

library(ggplot2)
dat <- subset(movies, votes > 1000)
m <- qplot(rating, votes, data=dat, na.rm = T)
bks <- seq(min(dat$rating),max(dat$rating))
m + scale_x_log10(breaks=bks,labels=bks)

plot

答案 1 :(得分:0)

我不确定这对ggplot2是否可行,但是如果你不是完全依赖于那个库,我99%肯定你可以使用标准{{1}的axis()函数来做到这一点。库。

得到应有的尊重,并且无意在此处进行讨论(如果您愿意,我们可以将其与之聊天),但这不是误导? x轴上的标签应反映其实际值。由于您正在对数据进行对数转换,因此轴标签应反映该转换。否则就会在科学上不诚实。


编辑了一个使用graphics库的例子......不像ggplot2那么漂亮,但它可以做你想要的(注意:我不得不编辑直方图的断点):

graphics