Существует ли функция R ggplot для заполнения гистограммы другой переменной / набором данных? - PullRequest
0 голосов
/ 27 февраля 2020

Я создал следующую гистограмму, используя:

structure(list(variable = structure(1:3, .Label = c("count_B", 
"count_M", "count_T"), class = "factor"), value = c(10.7894136128261, 
5.99274994891311, 4.10457180326646)), row.names = c(NA, -3L), class = "data.frame")

ggplot(meltedMUSICC, aes(x = variable, y = value, width = 0.95)) + geom_bar(stat = "identity") + coord_flip()

enter image description here

У меня есть другой набор данных который задает заполнение в процентах или относительном изобилии (из 1) каждой из переменных, это выглядит так:

structure(list(phylum = structure(1:4, .Label = c("Acidobacteria", 
"Actinobacteria", "Alphaproteobacteria", "Amoebozoa"), class = "factor"), 
    count_T = c(0.2, 0.1, 0.5, 0.2), count_M = c(0.1, 0.1, 0.1, 
    0.7), count_B = c(0.4, 0.3, 0.2, 0.1)), class = "data.frame", row.names = c(NA, 
-4L))

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

1 Ответ

1 голос
/ 27 февраля 2020

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

РЕДАКТИРОВАТЬ

Спасибо за публикацию данных

    library(ggplot2)
    library(tidyverse)

    df <- structure(list(variable = structure(1:3, .Label = c("count_B", 
                                                              "count_M", "count_T"), class = "factor"), value = c(10.7894136128261, 
                                                                                                                  5.99274994891311, 4.10457180326646)), row.names = c(NA, -3L), class = "data.frame")

    df2 <- structure(list(phylum = structure(1:4, .Label = c("Acidobacteria", 
                                                      "Actinobacteria", "Alphaproteobacteria", "Amoebozoa"), class = "factor"), 
                   count_T = c(0.2, 0.1, 0.5, 0.2), count_M = c(0.1, 0.1, 0.1, 
                                                                0.7), count_B = c(0.4, 0.3, 0.2, 0.1)), class = "data.frame", row.names = c(NA, 
                                                                                                                                            -4L))

    df3 <- df2 %>% pivot_longer(cols = -phylum) %>% 
      left_join(df, by = c("name" = "variable")) %>% 
      mutate(new_count = value.x*value.y)
    #> Warning: Column `name`/`variable` joining character vector and factor,
    #> coercing into character vector

    ggplot(df3, aes(x = name, y = new_count)) + geom_bar(stat = "identity", aes(fill = phylum))

Создано в 2020-02-27 пакетом представительство (v0.3.0)

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