r - 使用 scale_fill_brewer 在 ggplot 上更改颜色的问题
问题描述
我有一个要绘制的数据框,其中一列是类别,另一列是计数。
我用过scale_fill_brewer
,但它没有改变任何颜色。颜色也熄灭了——这些条都是霓虹色的。
我怎样才能解决这个问题?
数据框:
> dput(broad_cat)
structure(list(numbs = c(629, 526, 246, 86), labs = structure(c(4L,
2L, 3L, 1L), .Label = c("Propaganda", "Public Service", "Public Welfare",
"Social Welfare"), class = "factor")), .Names = c("numbs", "labs"
), row.names = c(NA, -4L), class = "data.frame")
情节代码:
p <- ggplot(broad_cat,
aes(reorder(broad_cat$labs, -(broad_cat$numbs), sum),
broad_cat$numbs))
p +
geom_bar(stat = "identity", fill = broad_cat$numbs) +
labs(x = "Categories", y = "Counts") +
ggtitle("Title[![enter image description here][1]][1]") +
theme(axis.title.x = element_text(size = 9),
axis.title.y = element_text(size = 9),
plot.title = element_text(size = 10, hjust = 0.5)) +
scale_fill_brewer(palette = "Blues")
固定的:
我包括在内fill
,aes()
但图表仍然是黑白的。
aes(reorder(broad_cat$labs, -(broad_cat$numbs), sum),
broad_cat$numbs), fill = broad_cat$numbs)
解决方案
由于numbs
是没有重复值的数字,我知道您使用它fill
只是为了获得一些漂亮的颜色。否则,正如错误所暗示的那样,它不会像numbs
连续的那样工作,并且您的填充比例是离散的。也许以下是您想要的:
p <- ggplot(broad_cat, aes(reorder(labs, -numbs, sum), numbs))
p + geom_bar(stat = "identity", aes(fill = as.factor(numbs)), show.legend = FALSE) +
labs(x = "Categories", y = "Counts") +
ggtitle("Title[![enter image description here][1]][1]") +
theme(axis.title.x = element_text(size = 9),
axis.title.y = element_text(size = 9),
plot.title = element_text(size = 10, hjust = 0.5)) +
scale_fill_brewer(palette = "Blues")
其中主要的东西是在fill
里面使用aes
,转换numbs
为使用离散尺度的因子,我也删除了所有broad_cat$...
这些会导致问题和变量应该直接通过名称引用。
推荐阅读
- python - 形状不匹配:标签的形状与 logits 的形状不兼容
- javascript - 如何使用 Angular 5 构建 chrome 扩展
- single-sign-on - 如何将社交凭证与自定义凭证映射
- python-3.x - Flask-login 授权每次输入期间面临的问题
- jquery - Slick.js 垂直,中心模式,slidesToShow > 5 不起作用
- php - JMS 序列化器、反序列化和 xpath
- java - 成功验证用户身份后继续执行代码
- php - PHP:阻止在类外创建实例变量
- kubernetes - 使用 kubernetes 注释时出现问题
- php - 从 mysql 表中选择并打印 2 个单独的行