Перебрать несколько столбцов и построить график для каждого в R? - PullRequest
2 голосов
/ 07 июня 2019

У меня есть набор данных, в котором первый столбец - «Год», а следующие пятьдесят - данные для каждого штата США.Я хочу создать несколько графиков в одном файле PDF, сопоставляя каждый столбец "штат" с столбцом "год" (то есть [, 1] и [, 2], [, 1] и [, 3], ... [, 1]и [, 50].

Я думал, что цикл по столбцам 2-50 будет хорошим решением, но я не могу заставить его работать в функции plot. Я новичок в циклах, поэтому я не совсем уверен, какчтобы продолжить. Ниже приведен пример из моего набора данных и часть кода, с которой у меня возникают проблемы с

testUS:
Year    ME   NH    VT   MA   RI   CT    NY
1953    4017 1579 5057 12215 1582 9252  23507
1954    5265 1351 1733 18561 633  8402  21002
1955    740  788  2214 9719  787  3958  22317
1956    985  184  1537 6458  957  5575  26639

pdf("testUSgraph.pdf")
for (i in 2:50) {
  plot(testUS[,1], testUS[,i])
}
dev.off

Сообщение об ошибке, которое я получаю:

function (which = dev.cur()) 
{
    if (which == 1) 
        stop("cannot shut down device 1 (the null device)")
    .External(C_devoff, as.integer(which))
    dev.cur()
}
<bytecode: 0x1075edc30>
<environment: namespace:grDevices>

Кроме того, любойКогда я назначаю testUS [, i] переменной, переменная вызывает данные только для одного состояния (т.е. показывает только данные столбца 50).

1 Ответ

0 голосов
/ 07 июня 2019

Предполагая, что ваш фрейм данных равен df,

library(ggplot2)

col_names <- colnames(df)
col_names <- col_names[-1]

for (i in col_names){
    plot <- ggplot(df, aes_string(x=df$Year, y=i)) +
    geom_point()
    print(plot)
}

Это должно вернуть их в виде отдельных графиков.

edit: для возврата графиков в том же виде,и сохраните как pdf,

col_names <- colnames(df)
col_names <- col_names[-1]

plot_list <- list()

for (i in col_names){
    plot <- ggplot(df, aes_string(x=df$Year, y=i)) +
    geom_point()
    plot_list[[i]] <- plot
}
plot_grob <- arrangeGrob(grobs=plot_list)
pdf("testUSgraph.pdf")
grid.arrange(plot_grob)
dev.off()

(проблема с сохранением pdf в исходном коде может заключаться в том, что вы забыли скобки, dev.off должно быть dev.off())

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