向 R 中的绘图添加不同的曲线

adding different curves to plots in R

我知道我可以使用 latticelatticeExtra R 包(见下文).

但是假设我们想向每个绘图窗格添加不同的曲线

例如,在下面的示例中,我想知道如何仅将 v1 添加到 top plot,将 v2 添加到 左下图v3右下图?

library(lattice)
library(latticeExtra)    

set.seed(24)
v1 <- density(rnorm(1e3, 3.5))
v2 <- density(rnorm(1e3, 3))
v3 <- density(rnorm(1e3, 2.75))


foo <- xyplot((1:32*.01)~wt|gear , data = mtcars)
foo + layer(panel.polygon(v1, col = 2, alpha = 0.3))

您可以使用 ggplot2facet_grid:

library(ggplot2)
library(dplyr)

# user data
v1 <- (rnorm(1e3, 3.5))
v2 <- (rnorm(1e3, 3))
v3 <- (rnorm(1e3, 2.75))

# Make df1 from user data and associate with add gear value in `mtcars`
df1 <- data.frame(wt = c(v1, v2, v3),
                gear = as.factor(c(rep(3, 1000),
                        rep(4, 1000), 
                        rep(5, 1000))))

# select data from mtcars and add user defined values (`val`)
df2 <- mtcars %>% 
  mutate(val = 1:32 * 0.01) %>% 
  remove_rownames() %>% 
  mutate(gear = as.factor(gear)) %>% 
  select(c(val, gear, wt))


ggplot(df2, aes(x = wt, y = val,  #set up mapping with df2
                fill = gear)) + 
  geom_density(data = df1,  #make density plots of df1
      aes(x = wt, 
          fill = gear),
      inherit.aes = FALSE) + #next add points from df1
  geom_point(data = df2, aes(x = wt, y = val), inherit.aes = FALSE) +
  facet_grid(cols = vars(gear)) 


您可以通过向 geom_density 添加 alpha 值来使填充颜色更加透明。

这是一个选项

foo + 
   layer(if(panel.number() == 3) {
            panel.polygon(v1, col = 2, alpha = 0.3)
      } else if(panel.number() == 1) {
            panel.polygon(v2, col = 2, alpha = 0.3)
      } else{
           panel.polygon(v3, col = 2, alpha = 0.3)
    })

数据

library(lattice)
library(latticeExtra)    

set.seed(24)
v1 <- density(rnorm(1e3, 3.5))
v2 <- density(rnorm(1e3, 3))
v3 <- density(rnorm(1e3, 2.75))


foo <- xyplot((1:32*.01)~wt|gear , data = mtcars)