R 在ggplot2中叠加正态分布:错误?
我想叠加两个正态分布。但是,如果我将xlim限制在一个狭窄的间隔内,则情节看起来相当怪异:R 在ggplot2中叠加正态分布:错误?,r,ggplot2,R,Ggplot2,我想叠加两个正态分布。但是,如果我将xlim限制在一个狭窄的间隔内,则情节看起来相当怪异: library(ggplot2) x=seq(1,6,.01) dat <- data.frame( c1 = dnorm(x,4.95, .72), c2 = dnorm(x,4.85, .91), x = x ) ggplot(data=dat, aes(x=x)) + geom_polygon(aes(y=dat[,1]), fill="red", alpha=0.6) +
library(ggplot2)
x=seq(1,6,.01)
dat <- data.frame(
c1 = dnorm(x,4.95, .72),
c2 = dnorm(x,4.85, .91), x = x
)
ggplot(data=dat, aes(x=x)) +
geom_polygon(aes(y=dat[,1]), fill="red", alpha=0.6) +
geom_polygon(aes(y=dat[,2]), fill="blue", alpha=0.6) +
xlab("Scale") + ylab("") + xlim(1,6)
库(ggplot2)
x=序号(1,6,01)
dat这不是一个bug-在y重新连接x轴之前,您正在切断范围,因此多边形将环绕到它的第一个点。如果要将多边形基于x轴,可以使用geom_ribbon
ggplot(dat) +
aes(x, ymin = 0) +
geom_ribbon(aes(ymax = c1), fill = 'red', alpha = 0.6) +
geom_ribbon(aes(ymax = c2), fill = 'blue', alpha = 0.6) +
xlim(1, 6)
这不是一个错误-你在y重新连接x轴之前切断了范围,所以这就是多边形环绕到它的第一个点的地方。如果要将多边形基于x轴,可以使用geom_ribbon
ggplot(dat) +
aes(x, ymin = 0) +
geom_ribbon(aes(ymax = c1), fill = 'red', alpha = 0.6) +
geom_ribbon(aes(ymax = c2), fill = 'blue', alpha = 0.6) +
xlim(1, 6)
您可以将geom\u区域
与position=“identity”
一起使用。重新整理和清理一下
library(tidyverse)
ggplot(dat %>% gather(var, val, -x), aes(x = x, y = val, fill = var)) +
geom_area(alpha = 0.6, position = 'identity') +
labs(x = "Scale", y = NULL, fill = 'Variable')
您可以使用geom\u区域
和position=“identity”
。重新整理和清理一下
library(tidyverse)
ggplot(dat %>% gather(var, val, -x), aes(x = x, y = val, fill = var)) +
geom_area(alpha = 0.6, position = 'identity') +
labs(x = "Scale", y = NULL, fill = 'Variable')
顺便说一下,这与叠加无关。只绘制一个多边形会产生类似的结果。顺便说一下,这与叠加无关。仅绘制一个多边形将产生类似的结果。geom_区域
整洁。geom_区域
整洁。谢谢。你如何在上面添加一个带有“c1-红色”和“c2-蓝色”的图例?@Paul它不适用于该方法。alistaire给出的另一个答案说明了如何做到这一点:您需要重塑数据,使其包含一个描述分布的变量(var
,在他的示例中)。谢谢。你如何在上面添加一个带有“c1-红色”和“c2-蓝色”的图例?@Paul它不适用于该方法。alistaire给出的另一个答案说明了如何做:您需要重塑数据,使其包含一个描述分布的变量(在他的示例中为var
)。