如何解决根据计数而不是类别R / Excel填充堆积的条形图的颜色
我想创建一个堆积的条形图,但我希望根据计数确定颜色。例如,如果我有5条,每条都有3个类别,则为条形图着色的默认方法是按类别。 (例如,类别1为红色,类别2为蓝色,类别3为绿色)。但是,我想要的是:如果对于栏1,类别1具有最高的计数,那将是红色。同样,如果对于栏2,类别3具有最高的计数,我希望第二个栏的类别3被涂成红色。有什么办法可以做到吗?我可以使用R / Excel / Numbers /其他任何软件。
这是我目前拥有的,我希望颜色由频率决定(几乎像热图)
解决方法
这在R语言中很简单。
如果我们有这样的数据:
set.seed(69)
df <- data.frame(category = sample(LETTERS,200,TRUE))
我们可以做到:
library(ggplot2)
ggplot(df,aes(x = category)) +
geom_bar(aes(fill = ..count..),color = "black") +
scale_fill_gradientn(colours = c("forestgreen","gold","red"))
编辑
从OP的补充信息看来,数据是这样的:
set.seed(69)
data <- data.frame(Question = rep(LETTERS[1:5],each = 5),Response = rep(c("Strongly disagree","Disagree","Neutral","Agree","Strongly agree"),5),Frequency = as.vector(replicate(5,{
x <- sample(10:30,5,TRUE); x / sum(x)})))
在这种情况下,我们可以这样做:
ggplot(data = data,aes(y = Question,x = Frequency)) +
geom_col(aes(fill = Frequency)) +
geom_text(aes(label = stringr::str_wrap(Response,10)),position = position_stack(vjust = 0.5)) +
scale_fill_gradientn(colours = c("forestgreen","red"))
编辑
OP的进一步请求...
ggplot(data = data,x = Frequency)) +
geom_col(aes(fill = Question,alpha = Frequency)) +
geom_text(aes(label = stringr::str_wrap(Response,position = position_stack(vjust = 0.5)) +
scale_fill_manual(values = c("deepskyblue4","forestgreen","orange","red"),name = "Question") +
scale_alpha_continuous(guide = "none") +
theme_minimal() +
theme(panel.grid = element_blank())
由reprex package(v0.3.0)于2020-08-14创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。