Есть ли способ построить несколько переменных уровня в R в отдельном графе с помощью простого кода?

Интересно, знает ли кто-нибудь, как выполнить этот код, но каждый ли уровень отображается отдельно?

sites<-levels(OrchardSprays$treatment)
par(mfcol=c(4,2))
for (i in 1:length(sites)) {
  here_tmp<-sites[i]
  plot(droplevels(subset(OrchardSprays, Site = here_tmp, select = c(treatment,decrease))))
  }

это вывод кода, но они все одинаковые.  Я хочу напечатать различную графику

Это вывод, который он мне дает. Но я хочу разные графики разных уровней. Я не знаю, почему он дает мне такие же графики...

2 ответа

Решение

Я согласен с @SimonG, что не ясно, почему вы хотите, чтобы каждый уровень отображался на отдельном графике, но вот способ сделать это с ggplot2, которая имеет хорошую систему для создания графиков каждого уровня переменной без большого дополнительного кода:

library(ggplot2)

ggplot(OrchardSprays, aes(treatment, decrease)) +
  geom_boxplot() +
  facet_wrap(~treatment, scales="free_x", ncol=2)

Чтобы поместить все диаграммы в один график, просто удалите последнюю строку:

ggplot(OrchardSprays, aes(treatment, decrease)) +
  geom_boxplot()

Ваша проблема, кажется, в том, как вы используете subset, Во-первых, нет переменной с именем Site в наборе данных. Во-вторых, Site = here_tmp не является логическим выражением.

Предполагая, что вы имели в виду treatment вместо Site, попробуй это:

sites <- levels(OrchardSprays$treatment)
par(mfcol=c(4,2))
for (i in 1:length(sites)) {
  here_tmp<-sites[i]
  plot(droplevels(subset(OrchardSprays, treatment == here_tmp, 
       select = c(treatment,decrease))))
}

Хотя я не совсем уверен, что это желаемый результат, потому что лично я не вижу смысла размещать их на отдельных участках.

Дайте мне знать, если это было полезно!

Другие вопросы по тегам