Изменение цветов ggplot по умолчанию уклоненной гистограммы - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть следующий фрейм данных:

   from variable               value
1   ASM cent.degree         0.208333333
2   AUS cent.degree         0.958333333
3   COK cent.degree         0.166666667
4   FJI cent.degree         0.916666667
5   FSM cent.degree         0.208333333
6   GUM cent.degree         0.208333333
26  ASM cent.betweenness    0.000000000
27  AUS cent.betweenness    0.588500000
28  COK cent.betweenness    0.000000000
29  FJI cent.betweenness    0.509333333
30  FSM cent.betweenness    0.001666667
31  GUM cent.betweenness    0.001666667

И следующий код:

  geom_bar(stat='identity', position='dodge') +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  theme(legend.position="bottom") +
  ggtitle("Központiság mutatók") +
  #scale_y_continuous(trans = "log2") +
  scale_x_discrete(name = "Származás") +
  scale_fill_discrete(name = NULL, labels = c("Degree centrality (Népszerűség)", 
                                              "Closeness centrality (Befolyás)",
                                              "Betweenness centrality (Alkuerő)",
                                              "Sajátvektor központiság (Státusz)"))

Это обеспечивает параллельную гистограмму четырех переменных в целом, дифференцируя цвет в зависимости от переменной. У меня проблемы с изменением цвета (до четырех новых цветов). Я попытался добавить scale_fill_manual(values = oc.color[1:4]) + (где oc.color - вектор гексакодов), но там написано «Шкала для« заполнения »уже присутствует. Добавляется еще одна шкала для« заполнения », которая заменит существующую шкалу». и продолжает использовать цвета ggplot по умолчанию. Here's the chart I get

Спасибо за любую помощь.

Ответы [ 2 ]

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

enter image description here Это работает в моей системе:

oc.color <- c("#999999", "#E69F00", "#56B4E9","#56B0E9");

df %>% ggplot(aes(from, value)) + 
    geom_bar(stat='identity', position='dodge', aes(fill = variable)) +
    theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
    theme(legend.position="bottom") +
    ggtitle("Központiság mutatók") +
    #scale_y_continuous(trans = "log2") +
    scale_x_discrete(name = "Származás") +
    scale_fill_discrete(name = NULL, labels = c("Degree centrality (Népszerűség)", 
                                                "Closeness centrality (Befolyás)",
                                                "Betweenness centrality (Alkuerő)",
                                                "Sajátvektor központiság (Státusz)")) + 
    scale_fill_manual(values = oc.color[1:4]);
0 голосов
/ 19 апреля 2020

Возможно, вы добавили scale_fill_manual до scale_fill_discrete. Таким образом scale_fill_discrete заменит ваши цвета по умолчанию. Лучший и рекомендуемый способ - использовать только одну шкалу для эстетики c. Попробуйте это:

library(ggplot2)

oc.color <- c("red", "blue", "green", "pink")

ggplot(df, aes(from, value, fill = variable)) +
  geom_bar(stat='identity', position='dodge') +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  theme(legend.position="bottom") +
  ggtitle("Központiság mutatók") +
  scale_x_discrete(name = "Származás") +
  scale_fill_manual(name = NULL, labels = c("Degree centrality (Nepszerűség)", 
                                            "Closeness centrality (Befolyás)",
                                            "Betweenness centrality (Alkuerő)",
                                            "Sajátvektor központiság (Státusz)"), values = oc.color[1:4])

enter image description here

...