Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用R中的ggplot2在同一图形中绘制两组数据的直方图和频率多边形_R_Ggplot2 - Fatal编程技术网

如何使用R中的ggplot2在同一图形中绘制两组数据的直方图和频率多边形

如何使用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

我有两组数据,我想得到一个带有直方图和频率多边形的单图形

我的数据帧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.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")