我想在同一个图中绘制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在一个图中组合时使所有密度图的高度相同?
此致
答案 0 :(得分:1)
请勿使用par(new=T)
。而是创建一个空图,然后为每个密度添加lines
#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)
答案 1 :(得分:1)
这是一个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()