首页 > 解决方案 > 使用 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")

固定的:

我包括在内fillaes()但图表仍然是黑白的。

aes(reorder(broad_cat$labs, -(broad_cat$numbs), sum), 
    broad_cat$numbs), fill = broad_cat$numbs)

标签: rggplot2

解决方案


由于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$...这些会导致问题和变量应该直接通过名称引用。


推荐阅读