如何使用R中的ggplot2在同一图形中绘制两组数据的直方图和频率多边形
我有两组数据,我想得到一个带有直方图和频率多边形的单图形 我的数据帧df如下所示:如何使用R中的ggplot2在同一图形中绘制两组数据的直方图和频率多边形,r,ggplot2,R,Ggplot2,我有两组数据,我想得到一个带有直方图和频率多边形的单图形 我的数据帧df如下所示: 'data.frame': 20000 obs. of 2 variables: $ measure : num -0.566 0.321 0.125 1.353 -1.288 ... $ processing: Factor w/ 2 levels "before","after": 1 1 1 1 1 1 1 1 1 1 ... measure processing 1 -0.56
'data.frame': 20000 obs. of 2 variables:
$ measure : num -0.566 0.321 0.125 1.353 -1.288 ...
$ processing: Factor w/ 2 levels "before","after": 1 1 1 1 1 1 1 1 1 1 ...
measure processing
1 -0.5656801 before
2 0.3210458 before
3 0.1252706 before
4 1.3532248 before
5 -1.2877305 before
6 0.3225545 before
我的代码如下:
png("figure_%d.png")
set.seed(2014)
n <- 10000
before <- rnorm(n)
df_1 <- data.frame(measure=before)
df_1$processing <- factor("before")
after <- before-rnorm(n,mean=1,sd=0.1)
df_2 <- data.frame(measure=after)
df_2$processing <- factor("after")
df<-rbind(df_1,df_2)
library(ggplot2)
print(ggplot(df, aes(measure,colour=processing))+geom_freqpoly())
print(ggplot(df, aes(measure,fill=processing))+geom_density(alpha=0.5))
print(ggplot(df_1, aes(measure,fill=processing))+geom_histogram(alpha=0.5))
print(ggplot(df_2, aes(measure,fill=processing))+geom_histogram(alpha=0.5))
print(ggplot(df, aes(measure,fill=processing))+geom_histogram(alpha=0.5))
print(ggplot(df, aes(measure,fill=processing,colour=processing))+geom_freqpoly()+geom_histogram(alpha=0.5))
我得到下面的数字
其中,两个频率多边形与预期一致
之后
ggplot(df, aes(measure,fill=processing))+geom_density(alpha=0.5)
我得到下面的数字
在两个密度重叠的地方,我得到了预期的混合颜色
现在我想得到一个带有两个直方图的图;首先,我在两个单独的图中绘制两个柱状图:
使用代码
ggplot(df_1, aes(measure,fill=processing))+geom_histogram(alpha=0.5)
ggplot(df_2, aes(measure,fill=processing))+geom_histogram(alpha=0.5)
我得到下面的数字
还有密码
ggplot(df_1, aes(measure,fill=processing))+geom_histogram(alpha=0.5)
ggplot(df_2, aes(measure,fill=processing))+geom_histogram(alpha=0.5)
我得到下面的数字
这两个柱状图与预期一致
当我试图用下面的代码在同一个图中绘制两个直方图时,问题就开始了
ggplot(df, aes(measure,fill=processing))+geom_histogram(alpha=0.5)
ggplot(df, aes(measure,fill=processing,colour=processing))+geom_freqpoly()+geom_histogram(alpha=0.5)
我知道这个数字
我无法解释为什么绿色直方图比红色直方图高。
此外,在两个直方图重叠的地方,我没有得到混合颜色
使用以下代码,尝试添加频率多边形会恶化问题
ggplot(df, aes(measure,fill=processing))+geom_histogram(alpha=0.5)
ggplot(df, aes(measure,fill=processing,colour=processing))+geom_freqpoly()+geom_histogram(alpha=0.5)
我知道这个数字
其中,频率多边形在我看来是正确的,但直方图是错误的,如上图所示
我做错了什么
版本的输出为
sessionInfo的输出是
使用geom_直方图,参数位置=标识。“位置”的默认值为堆栈。在这种情况下,钢筋不会重叠,而是堆叠在一起
geom_histogram(alpha = 0.5, position = "identity")
完整代码:
library(ggplot2)
ggplot(df, aes(measure, fill = processing)) +
geom_histogram(alpha = 0.5, position = "identity")
使用geom_直方图,参数位置=标识。“位置”的默认值为堆栈。在这种情况下,钢筋不会重叠,而是堆叠在一起
geom_histogram(alpha = 0.5, position = "identity")
完整代码:
library(ggplot2)
ggplot(df, aes(measure, fill = processing)) +
geom_histogram(alpha = 0.5, position = "identity")