R 在带有ggplot的堆叠条形图中使用多个颜色比例

R 在带有ggplot的堆叠条形图中使用多个颜色比例,r,ggplot2,colors,geom-bar,stackedbarseries,R,Ggplot2,Colors,Geom Bar,Stackedbarseries,我有一个数据集,其中单个样本属于一个大的组和一个小的子组。每个组都有几个子组,但每个子组只能属于一个较大的组。同样,每个样本只能属于一个子组,因此属于一个更大的组 我想制作一个具有两种颜色含义的真/假堆叠条形图: 轮廓(颜色)是较大的组 Fill是真/假数据,但是 是较大组轮廓颜色的两个阴影 这是接近我想要的,但不是浅灰色和深灰色,我希望红色水果是浅红色和深红色,绿色水果是浅绿色和深绿色,蓝色水果是浅蓝色和深蓝色 fruit <- data.frame(Sample=1:20,

我有一个数据集,其中单个样本属于一个大的组和一个小的子组。每个组都有几个子组,但每个子组只能属于一个较大的组。同样,每个样本只能属于一个子组,因此属于一个更大的组

我想制作一个具有两种颜色含义的真/假堆叠条形图:

  • 轮廓(颜色)是较大的组
  • Fill是真/假数据,但是 是较大组轮廓颜色的两个阴影
这是接近我想要的,但不是浅灰色和深灰色,我希望红色水果是浅红色和深红色,绿色水果是浅绿色和深绿色,蓝色水果是浅蓝色和深蓝色

fruit <- data.frame(Sample=1:20, 
                Fruit=c(rep("Apple", 3), rep("Strawberry", 2), rep("Grape", 4), 
                      rep("Watermelon", 4), rep("Lime", 3), rep("Blueberry", 2), 
                      rep("Plum", 2)), 
                Color=c(rep("Red", 9), rep("Green", 7), 
                        rep("Blue", 4)), 
                Ripe=c(rep(c(T, F), 10)))

fruit$Fruit <- factor(fruit$Fruit, unique(fruit$Fruit))
fruit$Color <- factor(fruit$Color, unique(fruit$Color))

ggplot(fruit, aes(Fruit)) +
    theme_bw() +
    geom_bar(stat="count", position="fill",
             aes(fill=Ripe, color=Color)) +
    scale_fill_manual(values=c("grey65", "grey85")) +
    scale_y_continuous(labels=scales::percent)

水果编辑:这可能是更正确的方法,使用
交互
为每个因子对指定唯一的颜色:

ggplot(fruit, aes(Fruit)) +
  geom_bar( aes(fill=interaction(Color,Ripe), color=Color), stat="count", position="fill")+ 
  scale_y_continuous(labels=scales::percent)+
  scale_fill_manual(values=c("pink","lightgreen","lightblue","red", "green","blue"))+
  theme_bw()

将颜色映射到
fill
,并映射到
alpha

ggplot(fruit, aes(Fruit)) +
  geom_bar(stat="count", position="fill",
             aes(fill=Color, color=Color,alpha=Ripe)) + 
  scale_y_continuous(labels=scales::percent)+
  scale_alpha_discrete(range=c(.5,1))+
  theme_bw()

编辑:这可能是更正确的方法,使用
交互
为每个因子对指定唯一的颜色:

ggplot(fruit, aes(Fruit)) +
  geom_bar( aes(fill=interaction(Color,Ripe), color=Color), stat="count", position="fill")+ 
  scale_y_continuous(labels=scales::percent)+
  scale_fill_manual(values=c("pink","lightgreen","lightblue","red", "green","blue"))+
  theme_bw()

将颜色映射到
fill
,并映射到
alpha

ggplot(fruit, aes(Fruit)) +
  geom_bar(stat="count", position="fill",
             aes(fill=Color, color=Color,alpha=Ripe)) + 
  scale_y_continuous(labels=scales::percent)+
  scale_alpha_discrete(range=c(.5,1))+
  theme_bw()

使用alpha美学:使用alpha美学:谢谢!我更喜欢使用alpha。在第二个例子中,如果我希望y轴是水果的“计数”,而不是百分比,该怎么办?此外,成熟为“计数”…@guidebortoli会首先使用
dplyr
进行聚合:
groupby(水果,成熟)%>%summary(count=n(),Color=first(Color))
然后
ggplot(水果2,aes(水果,计数))+geom_条(stat=“identity”,aes(fill=interaction(Color,cread),Color=Color))+scale\u-fill\u手册(value=c(“粉色”),“浅绿色”、“浅蓝色”、“红色”、“绿色”、“蓝色”)+主题
效果非常好!!我想知道你是否知道如何在每个颜色条中计算观察值的总数n。在这种情况下,每个颜色条的观察值为两个n,其中一个在颜色条上方为每个颜色的观察值的总数n,而在颜色条上方为该特定颜色的观察值的总数n…@guidebortoli如果找不到a,请提出一个新问题请回答。这样其他人也可以找到它。谢谢!我更喜欢使用alpha的外观。在第二个例子中,如果我希望y轴是水果的“计数”而不是百分比,那该怎么办?另外,成熟作为“计数”…@guidebortoli我会使用
dplyr
首先聚合:
fruit2%groupby(Fruit,crime)%>%summary(count=n(),Color=first(Color))
然后
ggplot(fourt2,aes(fourt,count))+geom_bar(stat=“identity”,aes(fill=interaction(Color,creed),Color=Color))+scale_fill_手册(值=c(“粉色”、“浅绿色”、“浅蓝色”、“红色”、“绿色”、“蓝色”))+主题(英文)
效果非常好!!我想知道你是否知道如何在每个颜色条中计算观察值的总数n。在这种情况下,每个颜色条的观察值为两个n,其中一个在颜色条上方为每个颜色的观察值的总数n,而在颜色条上方为该特定颜色的观察值的总数n…@guidebortoli如果找不到a,请提出一个新问题请回答,这样其他人也能找到。