【问题标题】:ggplot bar charts are always greyggplot 条形图总是灰色的
【发布时间】:2019-02-08 14:25:36
【问题描述】:

我正在尝试在 R 中使用 ggplot2 制作一些堆叠条形图,但无论我做什么,我的图表总是以灰色告终。

作为一个玩具示例,如果我运行这个:

Year <- c(2015,2015,2015,2015,2016,2016,2017,2017,2017,2017)
Class <- c(2,1,2,3,2,3,1,2,3,2)
Data <- data.frame(Year,Class)

ggplot(Data, aes(Year)) +
  geom_bar(aes(fill=Class))

我得到以下(非常灰色的)图表:

我发现的每个 ggplot 教程都建议我应该得到一些看起来像堆叠条形图的更丰富多彩的东西。有什么建议?我是个新手,所以很有可能是我的错。

【问题讨论】:

  • YearClass 都应该是使这项工作按您期望的方式工作的因素。
  • 欢迎来到 SO!你想怎么给它们上色?换句话说,通常情况下,情节是有含义的,不仅仅是为了花哨的目的:你想赋予颜色什么含义?
  • @AmmoPT,这对 OP 没有用处。显然他已经知道将fill 映射到一个变量。该问题中没有任何地方解释说它应该是获得特定结果的一个因素。
  • @user10310704,试试例如ggplot(Data, aes(factor(Year), fill = factor(Class))) + geom_bar()。阅读 an introductory R text 以了解 R 中的一个因素。
  • @s_t 除非您从事营销工作

标签: r ggplot2


【解决方案1】:

使用stat='identity' 和每组的计数表。然后使用position='stack' 堆叠条形图,同时保留基于Class 的分组信息

默认stat='count',这意味着 ggplot 计算每个值(此处为年份)出现的次数,但它不考虑任何其他分组变量。 stat='identity' 表示 ggplot 将值读取为实际条形高度。

melt() from reshape2table() 输出重新格式化为 ggplot 能够读取的长格式

library(ggplot2)
 library(reshape2)
 Year <- c(2015,2015,2015,2015,2016,2016,2017,2017,2017,2017)
 Class <- c(2,1,2,3,2,3,1,2,3,2)
 Data <- data.frame(Year,Class)


Data2 <- melt(table(Data))

 ggplot(mpg, aes(class)) +
  geom_bar(aes(fill = drv))

 ggplot(Data2, aes(x=Year, y=value)) +
  geom_bar(aes(fill = as.factor(Class)), position='stack',  stat='identity')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2021-07-16
    • 2020-10-05
    • 1970-01-01
    • 2022-07-19
    相关资源
    最近更新 更多