繁体   English   中英

R: ggplot2 为 scale_fill_continuous 指定数据集

[英]R: ggplot2 specify dataset for scale_fill_continuous

我正在尝试创建一个带有轮廓/热量叠加的散点图,但我想创建一个包含三个不同数据集的单个图,每个数据集都有自己的着色方案(如下图所示,我通过手动叠加三个单独的图创建了该图)。

在此处输入图片说明

我知道我可以指定某个数据框,例如stat_density2d(data=df1 ... 但是,当我尝试指定应该应用某种颜色的密度阴影填充的数据框时,如下面的代码:

ggplot(data=df,aes(x,y)) + geom_vline(xintercept = -0.977723605) + geom_hline(yintercept = 1.365281958) + stat_density2d(aes(fill=..level..,alpha=..level..),geom='polygon',colour='yellow') + scale_fill_continuous(low="yellow",high="yellow") + guides(alpha="none") + geom_point(shape = 21, colour = "grey", fill = "yellow", size = 1, stroke = 0.1) + commonTheme + stat_density2d(data=df1,aes(fill=..level..,alpha=..level..), geom='polygon',colour='blue') + scale_fill_continuous(data=df1,low="blue",high="blue") + geom_point(data=df1, shape = 21, colour = "grey", fill = "blue", size = 1, stroke = 0.1) + stat_density2d(data=df2,aes(fill=..level..,alpha=..level..),geom='polygon',colour='red') + scale_fill_continuous(data=df2,low="red",high="red") + geom_point(data=df2, shape = 21, colour = "grey", fill = "red", size = 1, stroke = 0.1) + scale_y_continuous(limits=c(0, 4)) + scale_x_continuous(limits=c(-2, 0))

我收到以下错误。

连续尺度错误(“填充”,“梯度”,seq_gradient_pal(低,高,:>未使用的参数(数据=列表(x=c(...)

如果我没有为任何scale_fill_continuous()参数指定数据集,则指定的最后一个配色方案将应用于所有参数。 有没有办法将所有三个数据集包含在一个图中,每个数据集都有不同的着色方案? 谢谢你。

编辑:我可以使用

ggplot(data=df1,aes(x,y)) + geom_vline(xintercept = -0.977723605) + geom_hline(yintercept = 1.365281958) + stat_density2d(aes(fill=..level..,alpha=..level..),geom='polygon',colour='blue') + 
  scale_fill_continuous(low="blue",high="blue") + 
  guides(alpha="none") +
  geom_point(shape = 21, colour = "black", fill = "blue", size = 1, stroke = 0.1) + commonTheme + scale_y_continuous(limits=c(0, 4)) + scale_x_continuous(limits=c(-2, 0))

要得到:

在此处输入图片说明

并手动组合各个数据集图以获得组合图,但我不知道如何创建具有多个数据集的单个图,就像我在原始帖子中尝试做的那样,其中每个数据集都有自己的阴影颜色。 如果我尝试指定应该应用阴影的数据集(如上所述),或者如果我没有指定数据集,例如,我会收到上面发布的错误消息

ggplot(data=df,aes(x,y)) + geom_vline(xintercept = -0.977723605) + geom_hline(yintercept = 1.365281958) + stat_density2d(aes(fill=..level..,alpha=..level..),geom='polygon',colour='yellow') + scale_fill_continuous(low="yellow",high="yellow") + guides(alpha="none") + geom_point(shape = 21, colour = "grey", fill = "yellow", size = 1, stroke = 0.1) + commonTheme + stat_density2d(data=df1,aes(fill=..level..,alpha=..level..), geom='polygon',colour='blue') + scale_fill_continuous(low="blue",high="blue") + geom_point(data=df1, shape = 21, colour = "grey", fill = "blue", size = 1, stroke = 0.1) + stat_density2d(data=df2,aes(fill=..level..,alpha=..level..),geom='polygon',colour='red') + scale_fill_continuous(low="red",high="red") + geom_point(data=df2, shape = 21, colour = "grey", fill = "red", size = 1, stroke = 0.1) + scale_y_continuous(limits=c(0, 4)) + scale_x_continuous(limits=c(-2, 0))

我得到一个用一种颜色(指定的最后一个配色方案)着色的图:

在此处输入图片说明

没有可重复的示例很难提供帮助,但似乎您总是使用单一颜色来填充每个数据集的密度。 如果是这种情况,请删除所有fill=..level..scale_fill_continuous并在stat_density2d但在aes()外指定fill

一个小例子:

N <- 10000
set.seed(1243)
pts <- seq(0,1,.1)
df <- data.frame(x = sample(pts, N, replace = TRUE, prob = pts/sum(pts)))
df$y <- rnorm(N, 0,0.5 + abs(df$x))
df1 <- -df+.5
ggplot(data=df,aes(x,y)) +
  stat_density2d(aes(alpha=..level..), geom='polygon', colour='yellow', fill = "yellow") +
  stat_density2d(data = df1, aes(alpha=..level..), geom='polygon', colour='blue', fill = 'blue') +
  guides(alpha="none")

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM