R: цикл для создания отдельного графика для каждого факторного уровня - PullRequest
0 голосов
/ 13 октября 2018

Я узнал, как организовать несколько графиков:

windows(width=18,height=3) 
par(las=1,cex.lab=0.75,cex.axis=0.6, bty="n", mgp = c(1, 0.6, 0),oma = c(2,4,2,0) + 0.1, mar = c(4,0,3,3) + 0.1)
a=layout(matrix(c(1,2,3,4), nrow = 1, ncol = 4,byrow=T))
layout.show(a) 

И я знаю, как создать один график, который использует часть данных (один из уровней фактора):

xmin=0
xmax=250
ymin=0
ymax=70
with(subset(df, Frequency=='6000'), barplot(value, beside=TRUE, col='black', ylim=c(ymin,ymax),xlim=c(xmin,xmax)))
rect(25,0,55,60, col= rgb(119,136,153, alpha=70, maxColorValue=225), border = "transparent")
axis(1, at=seq(0,250, by=50))

Я пытаюсь узнать, как эффективно добавлять одинаковые графики для разных уровней факторов (частот).Я знаю, что могу выбрать другое подмножество, но это очень неэффективно для многих уровней факторов.

Я пробовал что-то подобное, но, похоже, это не работает:

for ( i in 1:length(unique(df$Frequency)) ){
value <- subset( df, Frequency == unique ( df$Frequency )[i] )
barplot(value, main = paste0("Frequency: ",  unique(df$Frequency)) )
}

Это один измои первые циклы, поэтому любое объяснение было бы очень полезно ...

Мои данные: https://www.dropbox.com/s/tie9rrnmdxuua8c/df.csv?dl=0

df$Frequency = as.factor(df$Frequency)

1 Ответ

0 голосов
/ 20 октября 2018

Кто-то помог мне с этим вопросом.Решение ниже.

# space for plots

windows(width=18,height=3) 
par(las=1,cex.lab=0.75,cex.axis=0.6, bty="n", mgp = c(1, 0.6, 0),oma = c(2,4,2,0) + 
0.1, mar = c(4,0,3,3) + 0.1)
a=layout(matrix(c(1,2,3,4), nrow = 1, ncol = 4,byrow=T))
layout.show(a)

# axes' limits

xmin=0
xmax=250
ymin=0
ymax=70

# loop

for ( i in 1:length(unique(df$Frequency)) ){

 value <- subset( df, Frequency == unique ( df$Frequency )[i] )

barplot(value$value, main = paste0("Frequency: ",  unique(df$Frequency)[i]),ylim=c(ymin,ymax),xlim=c(xmin,xmax) )
rect(25,0,75,70, col= rgb(119,136,153, alpha=70, maxColorValue=225), border = "transparent")
axis(1, at=seq(0,300, by=50))

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...