/ / Použite pre slučku na vykreslenie viacerých riadkov v jednom grafe pomocou ggplot2 - r, ggplot2

Použite pre slučku na vykreslenie viacerých riadkov v jednom grafe pomocou ggplot2 - r, ggplot2

Pokúšam sa vykresliť viac riadkov v jednom grafe takto:

y <- matrix(rnorm(100), 10, 10)
m <- qplot(NULL)
for(i in 1:10) {
m <- m + geom_line(aes(x = 1:10, y = y[,i]))
}
plot(m)

Zdá sa však, že qplot bude analyzovať m počas plot(m) kde i je 10, tak plot(m) vytvára len jeden riadok.

To, čo očakávam, je podobné ako:

plot(1,1,type="n", ylim=range(y), xlim=c(1,10))
for(i in 1:10) {
lines(1:10, y[,i])
}

ktorý by mal obsahovať 10 rôznych riadkov.

Je tu ggplot2 spôsob, ako to urobiť?

odpovede:

9 pre odpoveď č. 1

Namiesto toho, aby ste zničili slučku, mali by ste to urobiť spôsobom ggplot2. ggplot2 chce údaje v dlhom formáte (môžete ich previesť pomocou reshape2 :: melt ()). Potom rozdeľte riadky cez stĺpec (tu Var2).

y <- matrix(rnorm(100), 10, 10)
require(reshape2)
y_m <- melt(y)

require(ggplot2)
ggplot() +
geom_line(data = y_m, aes(x = Var1, y = value, group = Var2))

tu zadajte popis obrázku


5 pre odpoveď № 2

Spôsob navrhnutý spoločnosťou EDi je najlepší spôsob. Ak stále chcete používať a for aby ste mohli generovať dátový rámec.

ako nižšie:

# make the data
> df <- NULL
> for(i in 1:10){
+ temp_df <- data.frame(x=1:10, y=y[,i], col=rep(i:i, each=10))
+ df <- rbind(df,temp_df)}

> ggplot(df,aes(x=x,y=y,group=col,colour=factor(col))) + geom_line() # plot data

Tieto výstupy:

tu zadajte popis obrázku