R 创建密度图以比较多个不同组中的两个变量

R 创建密度图以比较多个不同组中的两个变量,r,density-plot,R,Density Plot,我有两个变量,值从1到10。对于每个变量,有超过30000行,由许多国家分割(由变量“国家”标识)。我需要为所有这些国家的这两个变量创建一个综合密度图 我知道怎么做。要获得许多不同国家的密度图,我可以使用facet_wrap: ggplot(df, aes(x=var1)) + geom_density() + facet_wrap(~country) 另一方面,要在同一个图形中绘制两个不同变量的密度图,我可以使用以下方法: plot(density(df$var1)) + lines

我有两个变量,值从1到10。对于每个变量,有超过30000行,由许多国家分割(由变量“国家”标识)。我需要为所有这些国家的这两个变量创建一个综合密度图

我知道怎么做。要获得许多不同国家的密度图,我可以使用facet_wrap:

ggplot(df, aes(x=var1)) +
  geom_density() +
  facet_wrap(~country)
另一方面,要在同一个图形中绘制两个不同变量的密度图,我可以使用以下方法:

plot(density(df$var1)) +
lines(density(df$var2))
可能还有其他选项,如ggjoy,但我无法让它们中的任何一个与facet_wrap一起工作,也无法找到任何其他方法将两个变量的多个密度图放在一起。

编辑: 这应该适合您:

library(tidyverse)
library(hrbrthemes) # theme ggplot

# fake data generation var1 and var2 integer between 1 and 10 and random country names from vector country

df <- data.frame(replicate(2,sample(0:10,100,rep=TRUE)))
colnames(df) <- c("var1", "var2")
country <- c("Albania", "Andorra", "Austria", "Bahrain", "Morocco", "Namibia")
df$country <- sample(country, 100, replace = TRUE)

# df to long format
df1 <- df %>% 
  pivot_longer(
    cols = var1:var2,
    names_to = "variable",
    values_to = "value"
  )

# plot multilevel density plot
# plot multileve density with facet_warp
p <- ggplot(data=df1, aes(x=value, group=variable, fill=variable)) +
  geom_density(adjust=1.5, alpha=.4) +
  facet_wrap(~country) +
  theme_ipsum()
p
库(tidyverse)
图书馆(HRBR主题)#主题情节
#伪数据生成var1和var2整数(介于1和10之间)以及来自向量国家/地区的随机国家/地区名称

df如果您创建一个小的可复制示例以及预期的输出,将更容易提供帮助。读一读,效果很好。有没有一种更自动的方法,可能是函数或类似的东西,因为我打算用很多变量来实现这一点?