【问题标题】:HairEyeColor bar chart in RR中的HairEyeColor条形图
【发布时间】:2014-10-16 01:43:36
【问题描述】:

我正在使用以下代码生成 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~.)

我得到以下条形图:

我想用 2 种颜色为每个条上色:上​​半部分显示头发颜色,下半部分显示眼睛颜色,如下面的黑色头发和棕色眼睛颜色的手动创建的颜色条所示:

此外,图例需要删除。我怎样才能做到这一点?

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

【问题讨论】:

  • 删除你可以使用的图例...+ theme(legend.position="none")

标签: r


【解决方案1】:

您将不得不定义一些颜色,因为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)

【讨论】:

猜你喜欢
  • 2015-04-10
  • 2020-09-25
  • 1970-01-01
  • 2015-01-22
  • 2013-03-22
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
相关资源
最近更新 更多