ggplot geom_bar() 在绘图上填充不着色条

Posted

技术标签:

【中文标题】ggplot geom_bar() 在绘图上填充不着色条【英文标题】:ggplot geom_bar() fill not coloring bars on plot 【发布时间】:2019-08-19 08:49:57 【问题描述】:

在 geom_bar 上使用填充参数不会为我的绘图上的条形着色。我正在使用来自 Titanic 数据集 here 的 train.csv。

passengers <- read.csv('../input/train.csv')

我尝试将填充移到 aes() 之外,尝试将 aes 移至 ggplot() 函数。

这是我在泰坦尼克号数据集上使用的代码

ggplot(data = passengers) + 
    geom_bar(mapping = aes(x=Survived, fill = Pclass))

这是我用作模板的代码,它在钻石数据中内置的 ggplot 上运行良好。

ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = cut))

我只是不断地用 geom_bar 为 Survived 使用 Pclass 作为填充获得灰色条。

【问题讨论】:

如果没有访问 passengers 的任何人都很难提供帮助,您的数据框架是您重新组织泰坦尼克号数据集的原因。 卫生署!对于那个很抱歉。已使用数据集的链接以及我读入数据框的文件进行了编辑。 请将数据直接添加到您的问题中,而不是作为链接。 Pclass 是数字吗?如果是这样,请尝试在它周围扔一个as.character() 【参考方案1】:

你可以试试 as.factor()

ggplot(data = passengers) + 
geom_bar(mapping = aes(x=Survived, fill = as.factor(passengers$Pclass)))

可能你的变量不是因素

【讨论】:

【参考方案2】:

这对我有用:

ggplot(data = passengers) + 
   geom_bar(mapping = aes(x=Survived, fill = as.character(Pclass)))

【讨论】:

你知道这是为什么吗?我检查了 typeof(diamonds$cut) 和 typeof(titanic$Pc​​lass)。两者都是整数。什么会导致它在一个而不是另一个上工作? @Michael - 使用str() - cut 显示为有序因子。恐怕我不肯定为什么有序因子被视为相对于typeof() 的整数。 用 as.factor() 试过了,效果也不错。我想我再看看 ?geom_bar() 和 ggplot2-specs。没有看到任何明确说明它需要成为一个因素或角色的东西。只是我必须记住的事情。谢谢好心的先生!

以上是关于ggplot geom_bar() 在绘图上填充不着色条的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2:geom_bar 与组,position_dodge 和填充

ggplot2中实现多个绘图在一张画布中组合

如何双重填充具有两个特征的 geom_bar

scale_fill_manual 在 geom_bar 中不起作用

在barplot ggplot2中个性化每个面上的填充颜色

是否可以用ggplot2在R中以科学计数形式显示绘图geom_text数据标签?