R ggplot2-2变量聚集柱状图-变量1的渐变填充和变量2的实体填充
我有下面的数据,我想从中创建一个聚集柱状图。注意,这是虚拟数据R ggplot2-2变量聚集柱状图-变量1的渐变填充和变量2的实体填充,r,ggplot2,R,Ggplot2,我有下面的数据,我想从中创建一个聚集柱状图。注意,这是虚拟数据 dataraw <- read.table( text = "CRITERIA,ACTUAL,FUTURE,EFFORT Crit1,2,4,2 Crit2,3,4,3 Crit3,1,4,5", header = T, sep = "," ) 这将导致以下输出: 或者,我也可以将数据按原样融化并绘制输出图,然而,努力变成了一种与实际和未来完全相同的度量 library(ggplot2) library
dataraw <- read.table(
text = "CRITERIA,ACTUAL,FUTURE,EFFORT
Crit1,2,4,2
Crit2,3,4,3
Crit3,1,4,5",
header = T, sep = ","
)
这将导致以下输出:
或者,我也可以将数据按原样融化并绘制输出图,然而,努力变成了一种与实际和未来完全相同的度量
library(ggplot2)
library(reshape2)
dataraw.m <- melt(dataraw, id.vars="CRITERIA")
ggplot(data = dataraw.m, aes(CRITERIA, value)) +
geom_bar(aes(fill = variable), width = 0.4,
position = position_dodge(width = 0.5), stat = "identity")
库(ggplot2)
图书馆(E2)
dataraw.m快速脏方法:多次绘图。使数据变长(我使用的是tidyr::gather
),这样就可以使用相同y轴上的值。然后定义future
在aes
之外的颜色
库(tidyverse)
dataraw完全警告这开始有点不正常,但我们开始:
ggplot(dataraw, aes(x = CRITERIA, y = ACTUAL, fill = EFFORT)) +
scale_fill_gradient(low = "blue", high = "red") +
geom_col(aes(y = FUTURE), fill = "black", width = .4, position = position_nudge(.2)) +
geom_col(width = .4, position = position_nudge(-.2))
唯一的技巧是width
如果小于.5最好,并且position\u-nudge
是1/2,无论width
值是什么
仅供参考geom_col()
相当于geom_bar(stat='identity')
这看起来像你所想的吗ggplot(dataraw,aes(x=标准,y=实际,fill=努力))+scale\u fill\u gradient(low=“blue”,high=“red”)+geom\u col(aes(y=FUTURE),fill=“black”)+geom\u col()
@Nate比我的答案好得多。谢谢,但不确定OP想要什么,他们可能想要像你建造的那样并排建造,你永远不会know@Nate非常非常接近,谢谢。我需要做的唯一调整是让这些柱子并排排列,而不是实际坐在未来的顶部。有什么理由让他们并肩作战吗?抱歉,内特和特杰博澄清了一下,克里特一号在理想情况下会拥有现实和未来。然后跟着这个Crit2,然后是Crit3。Trejbo您的解决方案也非常接近,但是实际和未来是分开的,而不是Crit1同时拥有实际和未来-如果这有意义的话?非常感谢Tjebo。非常接近,但不是很接近。通过回顾您的解决方案,我对R有了更多的了解,因此我非常感激。非常感谢和问候。@JosephJW没问题。当你想在传奇中添加“未来”时,它可能会变得稍微复杂一些,但这是可能的。关于如何在传说中运用几种美学,有一些线索。如果你想那样做,遇到问题,请告诉我们。
ggplot(dataraw, aes(x = CRITERIA, y = ACTUAL, fill = EFFORT)) +
scale_fill_gradient(low = "blue", high = "red") +
geom_col(aes(y = FUTURE), fill = "black", width = .4, position = position_nudge(.2)) +
geom_col(width = .4, position = position_nudge(-.2))