Изменение цвета для geom_text дает совершенно другой цвет, чем требуется для - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу добавить метки к моим барам ggplot2 и изменить цвет метки. Каким-то образом я не могу.

Мой набор данных (упрощенно) примерно в таком формате:

data$value <- runif(27, min=10, max=60)
data$A <- factor((rep(1:3, each=9)))
data$B <- factor((rep(1:9, each=3)))
data$variable <- factor(rep(rep(1:3),9))


График будет выглядеть так:

three <- c(pink="#BD1550",dark="#490A3D",blue1="#0b6fa1",white="#FFFFFF", "#FFFFFF")
 m<-  data %>% group_by(A, variable) %>% summarise(mean=mean(value), sd=sd(value)) %>% 
             ggplot(aes(x=A,fill=variable)) +
             geom_col(aes(y=mean),position="stack")+
             geom_text(aes(label=round(mean,digits=2),y=mean, colour="white")
                          ,size=3, show.legend = F, position = position_stack(vjust = 0.5))+
             scale_fill_manual(values=three) + theme(legend.position="right")

Теперь, для цвет в geom_text, который я пробовал:

  1. color = "white"
  2. орфографический цвет или цвет
  3. color = "#FFFFFF"
  4. color = c ("# FFFFFF")
  5. color = 4
  6. color = white
  7. one <- c ("# FFFFFF"), а затем color = one </li>

Различные решения дают разные цвета для каждой этикетки: розовый, оранжевый, зеленый, синий из моей строки «три», но никогда не дают мне белый цвет. Я также пытался сделать его отличным от белого, но каким-то образом я не могу контролировать, какой цвет он мне возвращает.

Я не получаю сообщений об ошибках.

У меня заканчиваются идеи. У кого-нибудь есть решения?

1 Ответ

0 голосов
/ 14 апреля 2020

Проблема в том, что вы отображаете "белый" на цвет эстетики c внутри aes(). Таким образом, ggplot думает, что вы хотите отобразить переменную на цвете эстетики c, то есть "белый" не интерпретируется как название цвета. Вместо этого ggplot просто выбирает цвет из его палитры по умолчанию, которая является "красной". Просто передайте цвет в качестве аргумента geom_text за пределами aes(). Или используйте scale_color_manual для установки цветовой палитры. (; Попробуйте это:

library(ggplot2)
library(dplyr)

set.seed(42)

data <- data.frame(
  value = runif(27, min=10, max=60),
  A = factor((rep(1:3, each=9))),
  B = factor((rep(1:9, each=3))),
  variable = factor(rep(rep(1:3),9))  
)

three <- c(pink="#BD1550",dark="#490A3D",blue1="#0b6fa1", white="#FFFFFF", "#FFFFFF")
m <-  data %>% 
  group_by(A, variable) %>% 
  summarise(mean=mean(value), sd=sd(value)) %>% 
  ggplot(aes(x=A, fill=variable)) +
  geom_col(aes(y = mean),position="stack")+
  geom_text(aes(label = round(mean, digits=2), y=mean), colour="white"
            ,size=3, show.legend = F, position = position_stack(vjust = 0.5))+
  scale_fill_manual(values=three) + theme(legend.position="right")

m

Создано в 2020-04-14 пакетом Представить (v0.3.0)

...