Как построить график всех переменных в кадре данных с одной переменной в R - PullRequest
0 голосов
/ 11 апреля 2020

Я пытался создать панельный график, используя код из поста обмена стека другого человека, но я получаю ошибки. Я чувствую, что попробовал 100 различных способов сделать это, и я не могу заставить любой из них работать, и я на самом деле схожу с ума. Я получаю сообщение об ошибке «Ошибка: Aestheti c должна быть односторонней формулой, вызовом, именем или константой». Вот код: (Мне также нужно проверить корреляции Пирсона всех переменных с одним ответом, поэтому, если бы вы могли помочь с этим, это было бы здорово!)

начало кода:

library(grid)
multiplot <- function(..., plotlist=NULL, file, cols=1, layout=NULL) {


  # Make a list from the ... arguments and plotlist
  plots <- c(list(...), plotlist)

  numPlots = length(plots)

  # If layout is NULL, then use 'cols' to determine layout
  if (is.null(layout)) {
    # Make the panel
    # ncol: Number of columns of plots
    # nrow: Number of rows needed, calculated from # of cols
    layout <- matrix(seq(1, cols * ceiling(numPlots/cols)),
                     ncol = cols, nrow = ceiling(numPlots/cols))
  }

  if (numPlots==1) {
    print(plots[[1]])

  } else {
    # Set up the page
    grid.newpage()
    pushViewport(viewport(layout = grid.layout(nrow(layout), ncol(layout))))

    # Make each plot, in the correct location
    for (i in 1:numPlots) {
      matchidx <- as.data.frame(which(layout == i, arr.ind = TRUE))
      print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row,layout.pos.col = matchidx$col))
    }
  }
}

# plot the first variable against all others
plotList <- list()
for (i in 1:99) {
plotList[[i]] <- ggplot(data = data, aes_(x = data[,100-i], y = data[100])) + geom_point() + xlab("x") + ylab("y")
}

# actually draw the multiplot
multiplot(plotlist = plotList, cols = 3)

У меня также есть индекс, отличный от исходного сообщения, поскольку моя интересующая переменная находится в последнем столбце информационного кадра, а не в первом. вот ссылка на другой пост: Как построить график рассеяния переменной в кадре данных со всеми другими переменными в одном графике, используя R?

1 Ответ

0 голосов
/ 11 апреля 2020

Если все, что вы пытаетесь сделать, это создать график, кратный одной переменной, для каждой другой переменной (все непрерывные) в ваших данных, тогда компоненты tidyverse (tidyr и ggplot2) это гораздо более простой подход, чем попытка вручную создать сетку, и кажется, что вы уже пытаетесь использовать ggplot здесь, чтобы не ограничивать себя базой R?

library(tidyverse)
library(gapminder)

# plot all numeric variables against year

longer_gapminder <- gapminder %>%
  pivot_longer(c(-year, -country, -continent),
               names_to = "variable",
               values_to = "value")

longer_gapminder %>% 
  ggplot(aes(year, value)) + 
  geom_point() + 
  facet_wrap(~variable, scales = "free_y")

Создано в 2020-04-10 пакетом Представ (v0.3.0)

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