tidyverse
твой друг!В основном, ggplot2::geom_col
.
Ваш код может выглядеть следующим образом:
library(tidyverse)
mytbl <- df %>%
mutate(racegender = paste(Race,Gender))
g <- ggplot(mytbl, aes(racegender)) + scale_fill_brewer(palette = "Spectral")
g + geom_col(aes(fill = Ethnicity, y = DiagAge)) +
labs(title="Your title",
subtitle="Your subtitle") +
theme(axis.text.x = element_text(angle=65, vjust=0.6))
Здесь я использую этот код наdiamonds
набор данных для иллюстрации вашей ситуации.
library(tidyverse)
Создайте переменную cutcolor
с помощью mutate
.Я filter
для определенных значений для краткости в моем примере (скорее всего, не нужно или не допустимо для вас).
mytbl <- diamonds %>%
mutate(cutcolor = paste(cut,color)) %>%
filter(color %in% c("D", "E", "F"),
cut %in% c("Fair", "Good", "Very Good")) # to limit the number of columns
График будет использовать mytbl
и иметь cutcolor
нагоризонтальная ось:
g <- ggplot(mytbl, aes(cutcolor)) + scale_fill_brewer(palette = "Spectral")
Основная функция ggplot
- geom_col
.fill
складывает их, а вертикальная ось равна price
(DiagAge
в вашем случае).Деталь theme
помогает повернуть текст метки по горизонтали.
g + geom_col(aes(fill = clarity, y = price)) +
labs(title="Bar Graph with Stacked Types",
subtitle="Price Across Diamond Cut and Color") +
theme(axis.text.x = element_text(angle=65, vjust=0.6))angle=65, vjust=0.6))
Результат:
