更改闪避条形图的默认 ggplot 颜色

Changing default ggplot colours of a dodged bar chart

我有以下数据框:

   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 是十六进制向量),但它显示 "Scale for 'fill' is already present. Adding another scale for 'fill', which will replace the existing scale.",并继续使用默认的 ggplot 颜色。

感谢您的帮助。

您可能在 scale_fill_discrete 之前添加了 scale_fill_manual。这样 scale_fill_discrete 将用默认颜色替换您的颜色。最好和推荐的方法是每个美学只使用一个尺度。试试这个:

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])

这在我的系统中有效:

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]);