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$Pclass)。两者都是整数。什么会导致它在一个而不是另一个上工作? @Michael - 使用str()
- cut 显示为有序因子。恐怕我不肯定为什么有序因子被视为相对于typeof()
的整数。
用 as.factor() 试过了,效果也不错。我想我再看看 ?geom_bar() 和 ggplot2-specs。没有看到任何明确说明它需要成为一个因素或角色的东西。只是我必须记住的事情。谢谢好心的先生!以上是关于ggplot geom_bar() 在绘图上填充不着色条的主要内容,如果未能解决你的问题,请参考以下文章
ggplot2:geom_bar 与组,position_dodge 和填充