使用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")