码:
require(ggplot2)
set.seed(0)
xvar <- rnorm(100)
ggplot(data.frame(xvar), aes(xvar)) + geom_density(fill="lightblue") + scale_y_log10()
该图是这样的:
我怎样才能让上(即下文)密度估计的右侧的图表树荫?
码:
require(ggplot2)
set.seed(0)
xvar <- rnorm(100)
ggplot(data.frame(xvar), aes(xvar)) + geom_density(fill="lightblue") + scale_y_log10()
该图是这样的:
我怎样才能让上(即下文)密度估计的右侧的图表树荫?
的问题是, stat_density
缺省密度和填充之间y=0
线变换后的数据的。 这样改变在Y转换= 0线将牺牲品这类问题。 我个人认为这是一个错误ggplot2
,虽然因为图形语法专家们可能会认为,Y型转化的密度是没有意义的,这个错误可能不会得到很多的关注。
一个非常缺憾解决方法是手动加一个偏移量..density..
,你将必须显式调用,然后更改休息,以使它看起来像你没做什么奇怪的。
require(ggplot2)
require(scales)
set.seed(0)
xvar <- rnorm(100000)
quartz(height=4,width=6)
ggplot(data.frame(xvar), aes(x=xvar, y=log10(..density..)+4)) +
geom_density(fill='lightblue') +
scale_y_continuous(breaks=c(0,1,2,3,4),
labels=c('0.0001', '0.001', '0.01', '0.1','1'), limits=c(0,4),
name='density')
quartz.save('![StackOverflow_29111741_v2][1].png')
该代码生成此图表:
这不是一个ggplot2
甚至是R
问题,但仅仅是一个概率分布的尾部的一个问题被欠你的样本量。 日志轴可以永远走下来,以无限长的时间“达到”零,但没有有限的样本量能指望覆盖分布越来越不可能的区域。
因此,为了使情节漂亮,你需要在两个(一)增加点的数量从100至10,000或更高,而(B)保持情节ylim
S也是一样的。 (否则你在绘制额外的数据rnorm
通话将疏填充高斯甚至远离均值远的尾部,有说服力的ggplot2
进行自动y
轴的限制甚至更低,在不良采样尾巴的范围,吵闹你不喜欢会回来。)
require(ggplot2)
require(scales)
set.seed(0)
xvar <- rnorm(100000)
ggplot(data.frame(xvar), aes(xvar)) +
geom_density(fill="lightblue") +
scale_y_continuous(trans=log10_trans(), limits = c(0.01, 1))
这产生了这个情节,我认为这是你想要的。