Как заказать цветную заливку на geom_col? - PullRequest
1 голос
/ 20 июня 2020

First plot

Hi, I'm trying to change the order of values on X axis of geom_col and by using factor() and scale_x_discrete() functions and it worked but and the same time the colour order changed.

colors 

Second plot

I managed to changed it back to normal by changing the order of colours in scale_fill_manual :

scale_fill_manual(values = c("#f2f0f7", "#bcbddc", "#9e9ac8", "#756bb1", "#54278f", "#dadaeb"), breaks = positions) + 

but it messed up the legend colour order... Could you please guide me in the right direction where both the x axis and colour order are preserved on both plot and the legend?

Третий сюжет

1 Ответ

1 голос
/ 20 июня 2020

Основная ошибка заключается в наличии двух переменных для одной оси x: X и positions. Для графика требуется только positions.

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

library(ggplot2)

ggplot(a, aes(positions, M, fill = positions)) + 
  geom_col(width = 0.75, position = position_dodge(0.1), colour = "black", size = 0.9) +
  scale_x_discrete(limits = positions) + 
  coord_cartesian(ylim = c(0, NA)) +
  scale_fill_manual(values = colors, breaks = positions) +
  theme_bw()

введите описание изображения здесь

Данные

set.seed(2020)    # needed to make the y axis values reproducible

colors <- c("#f2f0f7", "#dadaeb", "#bcbddc", "#9e9ac8", "#756bb1", "#54278f")
positions <- c("P1", "P8", "P3", "P4", "P5", "P6")
positions <- factor(positions, levels = c("P1", "P8", "P3", "P4", "P5", "P6")) # order on legend
M <- sample(10, length(positions), TRUE)
a <- data.frame(M, positions, colors)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...