如何在ggplot2中改变堆积的巴特图中的条形图的颜色

1,139 阅读1分钟

你可以使用下面的基本语法来改变ggplot2中堆叠条形图中条形的颜色:

#create stacked bar chart
ggplot(df, aes(x=x_var, y=y_var, fill=fill_var)) + 
  geom_bar(position='stack', stat='identity') +
  scale_fill_manual(values=c('red', 'purple', 'pink', ...))

下面的例子展示了如何在实践中使用这种语法。

例子:在ggplot2中改变堆积条形图中条形的颜色

假设我们在R中拥有以下数据框,显示了不同篮球运动员的得分情况:

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 position=c('G', 'F', 'C', 'G', 'F', 'C', 'G', 'F', 'C'),
                 points=c(22, 12, 10, 30, 12, 17, 28, 23, 20))

#view data frame
df

  team position points
1    A        G     22
2    A        F     12
3    A        C     10
4    B        G     30
5    B        F     12
6    B        C     17
7    C        G     28
8    C        F     23
9    C        C     20

如果我们创建一个叠加条形图来显示各队球员的得分,ggplot2将使用一组默认的颜色来填充条形图:

library(ggplot2)

#create stacked bar chart
ggplot(df, aes(x=team, y=points, fill=position)) + 
  geom_bar(position='stack', stat='identity')

然而,我们可以使用scale_fill_manual()参数来指定ggplot2应该为条形图使用的确切颜色:

library(ggplot2)

#create stacked bar chart with custom colors
ggplot(df, aes(x=team, y=points, fill=position)) + 
  geom_bar(position='stack', stat='identity') +
  scale_fill_manual(values=c('red', 'purple', 'pink'))

现在条形图有了我们在scale_fill_manual() 函数中指定的确切颜色(按从上到下的顺序)。

还请注意,我们可以在**scale_fill_manual()**函数中使用十六进制颜色代码。

library(ggplot2)

#create stacked bar chart with custom hex color codes
ggplot(df, aes(x=team, y=points, fill=position)) + 
  geom_bar(position='stack', stat='identity') +
  scale_fill_manual(values=c('#2596BE', '#8225BE', '#D4C443'))

现在,这些条形图具有我们指定的十六进制颜色代码。