R 手动设置ggplot2的组颜色

R 手动设置ggplot2的组颜色,r,colors,ggplot2,R,Colors,Ggplot2,我有一个数据集,我必须从中绘制几十幅图。 数据由30组和每组内的几个测量组成 大多数绘图不会同时使用所有组 我的目标是为组集提供一个单色托盘,这样任何给定的组在所有图形中都是相同的颜色。 在下面的示例中,这意味着组C在图1和图2中的颜色相同 我的问题是怎么做 我尝试了几种不同的缩放填充手册(以及缩放颜色手册,如果合适的话)。虽然颜色是从指定的托盘中选择的, 我似乎无法按组索引托盘,或以其他方式“跳过”与缺少组对应的颜色 我还想尝试将颜色信息添加为正在绘制的数据的一列,但我不确定如何使用此列作为组

我有一个数据集,我必须从中绘制几十幅图。 数据由30组和每组内的几个测量组成

大多数绘图不会同时使用所有组

我的目标是为组集提供一个单色托盘,这样任何给定的组在所有图形中都是相同的颜色。 在下面的示例中,这意味着
组C
图1
图2
中的颜色相同

我的问题是怎么做

我尝试了几种不同的缩放填充手册(以及缩放颜色手册,如果合适的话)。虽然颜色是从指定的托盘中选择的, 我似乎无法按组索引托盘,或以其他方式“跳过”与缺少组对应的颜色

我还想尝试将颜色信息添加为正在绘制的数据的一列,但我不确定如何使用此列作为组的颜色

library(ggplot2)
library(data.table)

# SAMPLE DATA: 
DT1 <- data.table(Name=c("C_sub1", "A_sub1", "A_sub2"), Value=c(2,5,3), Group=c("C", "A", "A"), key="Group")
DT2 <- data.table(Name=c("A_sub1", "B_sub1", "C_sub1", "C_sub2"), Value=c(4,3,6,3), Group=c("A", "B", "C", "C"), key="Group")

# SAMPLE Color Pallette  
ColorsDT <-  data.table(Group=LETTERS[1:5], Color=c("#333BFF", "#CC6600", "#9633FF", "#E2FF33", "#E3DB71"), key="Group")

# Add a column for Color, according to the Group
DT1[ColorsDT, Color := i.Color]
DT2[ColorsDT, Color := i.Color]

# A Basic Plot
simplePlot <- function(DT, tit) 
  ggplot(DT ,aes(x=Name, y=Value, fill=Group)) +
   geom_bar(stat="identity") + xlab("") + ggtitle(tit)
    # Tried sevearl variations of: 
    #  + scale_fill_manual(values=ColorsDT$Color)


# Plot Them
grid.arrange(ncol=2,  simplePlot(DT1, tit="Plot 1"),  simplePlot(DT2, tit="Plot 2"))

库(ggplot2)
库(数据表)
#样本数据:

DT1您可以将每个组与颜色关联,然后传递到功能:

group.colors <- c(A = "#333BFF", B = "#CC6600", C ="#9633FF", D = "#E2FF33", E = "#E3DB71")

simplePlot <- function(DT, tit) 
  ggplot(DT ,aes(x=Name, y=Value, fill=Group)) +
  geom_bar(stat="identity") + xlab("") + ggtitle(tit) +
  #Specify colours
  scale_fill_manual(values=group.colors)

我认为您的方法存在的问题是颜色没有命名,因此
scale\u fill\u manual()
无法关联它们。比较:

ColorsDT <-  data.table(Group=LETTERS[1:5], Color=c("#333BFF", "#CC6600", "#9633FF", "#E2FF33", "#E3DB71"), key="Group")
ColorsDT
#   Group   Color
#1:     A #333BFF
#2:     B #CC6600
#3:     C #9633FF
#4:     D #E2FF33
#5:     E #E3DB71
ColorsDT
ColorsDT <-  data.table(Group=LETTERS[1:5], Color=c("#333BFF", "#CC6600", "#9633FF", "#E2FF33", "#E3DB71"), key="Group")
ColorsDT
#   Group   Color
#1:     A #333BFF
#2:     B #CC6600
#3:     C #9633FF
#4:     D #E2FF33
#5:     E #E3DB71
ColorsDT.name <-  data.table(A = "#333BFF", B = "#CC6600", C = "#9633FF", D = "#E2FF33", E =  "#E3DB71")
ColorsDT.name
#          A       B       C       D       E
# 1: #333BFF #CC6600 #9633FF #E2FF33 #E3DB71