使用scale\u fill\u brewer更改ggplot颜色的问题

使用scale\u fill\u brewer更改ggplot颜色的问题,r,ggplot2,R,Ggplot2,我有一个要绘制的数据框,其中一列是类别,另一列是计数 我用了scale\u fill\u brewer,但它没有改变任何颜色。颜色也变暗了——这些条都是霓虹色的 我怎样才能解决这个问题 数据帧: > dput(broad_cat) structure(list(numbs = c(629, 526, 246, 86), labs = structure(c(4L, 2L, 3L, 1L), .Label = c("Propaganda", "Public Service", "Publi

我有一个要绘制的数据框,其中一列是类别,另一列是计数

我用了
scale\u fill\u 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")

由于
numbs
是数字,没有重复的值,我知道您使用它来填充
只是为了得到一些漂亮的颜色。否则,正如错误所表明的,它将不起作用,因为
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")

p您有
fill
aes
之外的
aes(重新排序(宽猫$labs,-(宽猫$numbs,sum),宽猫$numbs),fill=宽猫$numbs)
但它没有改变颜色,仍然是b&wI编辑了您的问题以提高代码的可读性。建议遵循我的建议不要在
aes
@song0089中使用
$
,没问题,我很高兴它有帮助。事实上,您不应该在
aes
内部使用
$
,而且通常(尽管不总是),在
ggplot
调用的其他地方也不需要这样做。
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")