Создать график для каждой переменной в данных (все переменные являются категориальными) - PullRequest
0 голосов
/ 03 апреля 2019

Я использую набор данных Soybean из пакета mlbench в R.

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

https://www.statmethods.net/graphs/images/barplot1.jpg

Большое спасибо заранее, M

Ответы [ 3 ]

2 голосов
/ 03 апреля 2019

В качестве альтернативы вы также можете попробовать {purrr} применить процесс {ggplot2} к каждому столбцу данных. Я использовал aes_string() здесь, чтобы имена столбцов можно было передавать в виде строк в ggplot эстетику.

Редактировать: Использование gridExtra :: marrangeGrob () для создания 6 × 6 расположения всех фигур.

library(mlbench)
library(purrr)
library(ggplot2)
library(gridExtra)

data("Soybean")

marrangeGrob(
  map(
    names(Soybean), 
    ~ ggplot(Soybean, aes_string(.x)) + 
      geom_bar()
  ),
  ncol = 6,
  nrow = 6,
  top = "Soybean Distribution"
)
0 голосов
/ 03 апреля 2019

Используя базу R, вы можете получить желаемый результат с помощью:

my.barplot.function = function(x){ 
  heights = table(x)
  barplot(heights, names.arg = levels(x))
}

apply(Soybean, 2, my.barplot.function)

Вы получите графики, подобные приведенному ниже, для всех переменных:

Barplot for var 1

0 голосов
/ 03 апреля 2019

Если вы хотите отобразить все переменные одну за другой, вы можете использовать цикл для имен столбцов вашего набора данных.Используйте ggplot() и функцию get(), чтобы сфокусироваться на имени переменной.

library(mlbench)
data(Soybean)
library(ggplot2)
library(dplyr)       

for(j in 1:ncol(Soybean)){

  var <- colnames(Soybean)[j]

  Soybean %>% 
    ggplot(aes(x = get(var))) + 
    geom_histogram(stat = 'count') +
    labs(x = 'var')

}

Это сгенерирует 36 графов, подобных этому: enter image description here

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