我正在使用以下代码来生成HairEyeColor数据集的条形图:
mm = melt(HairEyeColor)
mm$hair_eye = paste(mm$Hair, mm$Eye, sep='_')
ggplot(mm)+geom_bar(aes(x=hair_eye, y=value, fill=hair_eye), stat='identity')+facet_grid(Sex~.)
我得到以下条形图:
我想用两种颜色为每个条上色:上半部分显示头发的颜色,下半部分显示眼睛的颜色,如下面针对黑发和棕色眼睛颜色的手动创建的条所示:
此外,图例也需要删除。我怎样才能做到这一点?
HairEyeColor数据集:
> HairEyeColor
, , Sex = Male
Eye
Hair Brown Blue Hazel Green
Black 32 11 10 3
Brown 53 50 25 15
Red 10 10 7 7
Blond 3 30 5 8
, , Sex = Female
Eye
Hair Brown Blue Hazel Green
Black 36 9 5 2
Brown 66 34 29 14
Red 16 7 7 7
Blond 4 64 5 8
您将必须定义一些颜色,因为其中没有“ Blond”或“ Hazel”颜色 colors()
library(reshape2)
mm = melt(HairEyeColor)
mm <- within(mm, {
color <- tolower(Hair)
color <- ifelse(color == 'blond', 'yellow', color)
color1 <- tolower(Eye)
color1 <- ifelse(color1 == 'hazel', 'gold', color1)
value <- value / 2
value1 <- value
})
mm <- melt(mm, id.vars = -(4:5))
cols <- c(apply(mm[1:16, c('color','color1')], 1, c))
library(ggplot2)
ggplot(data = mm, aes(x = interaction(Hair, Eye), y = value, fill = interaction(variable, interaction(Hair, Eye)))) +
geom_bar(stat = 'identity') + facet_grid(Sex ~ .) +
theme(legend.position = 'none') +
scale_fill_manual(values = cols)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句