использование фасетов в каждом столбце с группировкой цветов - PullRequest
0 голосов
/ 06 ноября 2018

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

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

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

Мне бы хотелось, но вместо ясности, это каждый столбец, подобный этому ...

library(tidyverse)

# what I want but clarity should be replaced with every column except FILL
ggplot(diamonds, aes(x = price, fill = color)) +
  geom_histogram(position = 'stack') +
  facet_wrap(clarity~.)

# it would look exactly like this, except it would have the fill value by a group.
gathered_data = gather(diamonds %>% select_if(is.numeric))

ggplot(gathered_data , aes(value)) +
  geom_histogram() + 
  theme_classic() +
  facet_wrap(~key, scales='free')

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Не совсем понятно, что вы ищете. Изображение вашего ожидаемого результата было бы гораздо более ярким, чем описание (не все из нас носители английского языка ...), но, возможно, что-то вроде этого?

diamonds %>% 
  rename(group = color) %>% # change this line to use another categorical 
                            # column as the grouping variable

  group_by(group) %>%       # select grouping variable + all numeric variables
  select_if(is.numeric) %>%
  ungroup() %>%

  tidyr::gather(key, value, -group) %>% # gather all numeric variables

  ggplot(aes(x = value, fill = group)) +
  geom_histogram(position = "stack") + 
  theme_classic() +
  facet_wrap(~ key, scales = 'free')

geom_histogram example

# alternate example using geom density
diamonds %>% 
  rename(group = cut) %>%
  group_by(group) %>%
  select_if(is.numeric) %>%
  ungroup() %>%
  tidyr::gather(key, value, -group) %>%
  ggplot(aes(x = value, color = group)) +
  geom_density() + 
  theme_classic() +
  facet_wrap(~ key, scales = 'free')

geom_density example

0 голосов
/ 06 ноября 2018

tidyr::gather нужно четыре штуки:

1) данные (в данном случае diamonds, переданные через канал в первый параметр gather ниже)

2) ключ

3) значение

4) имена столбцов, которые будут преобразованы в пары ключ / значение.

gathered_data <- diamonds %>% 
  gather(key, value, 
         select_if(diamonds, is.numeric) %>% names())
...