Нужна специфическая окраска в ggplot2 с виридисом - PullRequest
0 голосов
/ 27 ноября 2018

Вот ситуация, я генерирую сложные столбчатые диаграммы с 20+ записями.Тем не менее, ниже по потоку это часто сокращается до 5 или 6 записей.Я хочу использовать цвета из этого нижестоящего набора и перенести их обратно к более сложным образцам.

По сути, я хочу, чтобы все, чего нет в конечном наборе, было окрашено в серый цвет.В настоящее время я не знаю, как я могу сделать это.

Дополнительным недостатком является то, что нисходящие данные не обязательно имеют ту же форму, что и восходящие данные.Для контекста это сложный набор данных биологического секвенирования 16S, а также чистого секвенирования и классификации ДНК.

Моя текущая мысль состоит в том, чтобы как-то назначить цвет непосредственно определенному значению, но я не совсем уверен, как это сделать и как определить, какой цвет отображается вниз по течению viridis.

Редактировать: Эти наборы данных должны несколько указывать на то, что я ищу:

Первый набор

 SampleID Abundance
 A 0.083
 B 0.083
 C 0.083
 D 0.083
 E 0.083
 F 0.083
 G 0.083
 H 0.083
 I 0.083
 J 0.083
 K 0.083
 L 0.083

Нисходящий набор

SampleID Abundance
A 0.25
E 0.25
I 0.25
J 0.25

В этом случае яхотите, чтобы A, E, I и J имели одинаковую окраску, а остальные буквы были серыми.Я также предпочел бы, чтобы все цветные записи складывались вместе, а затем оставляли серый сверху.Другой вариант, который, я думаю, состоит в том, чтобы вернуться назад и удалить все не входящие записи, а затем добавить звездочку, гласящую: «пропущенные области не найдены вниз по течению».

Edit2: макет, ожидаемый вывод исходных и последующих данных

Example output

1 Ответ

0 голосов
/ 27 ноября 2018
library(tidyverse)
library(viridis)
#> Loading required package: viridisLite

first <- tribble(~SampleID, ~Abundance,
                 "A", 0.083,
                 "B", 0.083,
                 "C", 0.083,
                 "D", 0.083,
                 "E", 0.083,
                 "F", 0.083,
                 "G", 0.083,
                 "H", 0.083,
                 "I", 0.083,
                 "J", 0.083,
                 "K", 0.083,
                 "L", 0.083) %>% 
  mutate(Class = "First")

downstream <- tribble(~SampleID, ~Abundance,
                      "A", 0.25,
                      "E", 0.25,
                      "I", 0.25,
                      "J", 0.25) %>% 
  mutate(Class = "Downstream")

pal <- viridis(4)

maps <- tibble(labels = LETTERS[1:12],
       colors = case_when(labels == "A" ~ pal[1],
                          labels == "E" ~ pal[2],
                          labels == "I" ~ pal[3],
                          labels == "J" ~ pal[4],
                          TRUE ~ "Grey50")) %>% 
  mutate(order = ifelse(colors == "Grey50", 2, 1)) %>% 
  arrange(order, labels)

values <- set_names(maps$colors, maps$labels)

plot_data <- bind_rows(first, downstream) %>% 
  mutate(SampleID = factor(SampleID, maps$labels),
         Class = factor(Class, c("First","Downstream"))) %>% 
  arrange(Class, SampleID)

ggplot(plot_data, aes(x = Class, y = Abundance, fill = SampleID, group = Class)) +
  geom_col() +
  scale_fill_manual("Legend", values = values, breaks = LETTERS[1:12])

Создано в 2018-11-27 с помощью пакета представительства (v0.2.1)

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