R 在同一图中绘制几个密度

R 在同一图中绘制几个密度,r,plot,R,Plot,我想在同一个图中绘制4个数据集。我一直试图覆盖,但数据相似,无法区分。 我有以下代码: plot(density(rnd1[,5]*f),lty = 1,lwd = 1,col="black",xlim=c(0,2750),xlab="minutes",main='Event 5') par(new=T) plot(density(fpsdata[,5]*f), type="l",lty = 2,lwd = 2,col="red", xlim=c(0,2750), xlab="", ylab='

我想在同一个图中绘制4个数据集。我一直试图覆盖,但数据相似,无法区分。 我有以下代码:

plot(density(rnd1[,5]*f),lty = 1,lwd = 1,col="black",xlim=c(0,2750),xlab="minutes",main='Event 5')
par(new=T)
plot(density(fpsdata[,5]*f), type="l",lty = 2,lwd = 2,col="red", xlim=c(0,2750), xlab="", ylab='',axes=F,main='')
par(new=T)
plot(density(rankdata[,5]*f), type="l",lty = 1,lwd = 2,col="blue", xlim=c(0,2750), xlab="", ylab='',axes=F,main='')
par(new=T)
plot(density(graddata[,5]*f), type="l",lty = 4,lwd = 2,col= "green3", xlim=c(0,2750), xlab="", ylab='',axes=F,main='')
问题是四个密度图有相同的高度,这似乎很奇怪,因为我用另一个程序绘制了相同的数据,而密度有不同的高度

有人知道为什么R将所有密度图合并在一个图形中时,使其具有相同的高度吗

问候

不要使用
par(new=t)
。相反,创建一个空绘图,然后为每个密度添加

#DATA
set.seed(42)
a = rnorm(25)
b = rnorm(25)

#Calculate density
ad = density(a)
bd = density(b)

#Create empty plot so as to accommodate all data
plot(c(ad$x, bd$x), c(ad$y, bd$y), type = "n")

#Add density plots
lines(ad$x, ad$y)
lines(bd$x, bd$y, lty = 2)

以下是ggplot2方法:

library(tidyverse) # Includes ggplot2 and dplyr (the two packages we'll use below)

# Fake data
set.seed(2)
f = 2
df1 = data.frame(value=rnorm(123, 1.1, 2))
df2 = data.frame(value=rnorm(245, 0.8, 2.5))
df3 = data.frame(value=rnorm(211, 1.4, 1.9))

# Stack data frames and plot
bind_rows(setNames(list(df1, df2, df3), c("df1","df2","df3")), .id="source") %>% 
  ggplot(aes(value*f, colour=source)) +
    geom_density() +
    theme_classic()

将数据集堆叠到单个数据框中,并在其中添加一列标记源数据集,然后使用ggplot2进行打印。如果您的数据帧被称为
dat
,值列被称为
value
,并且带有源数据集的列被称为
source
,则您可以执行以下操作:
库(ggplot2);ggplot(dat,aes(值,颜色=源))+geom_density()