我有下面的数据,我想要创建一个集群列图表。注意,这是虚拟数据。
dataraw <- read.table(
text = "CRITERIA,ACTUAL,FUTURE,EFFORT
Crit1,2,4,2
Crit2,3,4,3
Crit3,1,4,5",
header = T, sep = ","
)我希望使用实际和未来作为我的两列和标准作为我的x轴。
就上下文而言,实际是衡量当前标准的一种标准。然而,未来是标准应该在哪里的理想状态。努力是衡量从实际到未来需要付出多少努力。
复杂性是,我希望用努力作为渐变填充(理想的定制可用-例如蓝色低,红色高)的实际和我需要的未来是一个坚实的颜色,我选择(在这一点黑色,但它可以调整)。
目前,我能够绘制图表的填充,但我不知道如何包括未来的专栏。
library(ggplot2)
ggplot(dataraw, aes(x = CRITERIA, y = ACTUAL, fill = EFFORT)) +
scale_fill_gradient(low = "blue", high = "red") +
geom_bar(stat = "identity")这将产生以下结果:

或者,我可以像这样融化数据并绘制输出图,但是工作量成为与实际和未来一样的衡量标准。
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")其结果是:

但是,我可以从dataframe中删除工作,这将消除我在实际中创建渐变的能力。
我对R还是很陌生的,所以我不确定我所要求的是否可能。
预先感谢您的帮助。
发布于 2018-12-21 01:54:08
完全警告,这开始变得有点烦躁,但我们现在开始:
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_nudge是width值的1/2。
FYI geom_col()等价于geom_bar(stat = 'identity')
发布于 2018-12-21 01:33:12
快速而肮脏的方法:策划几次。使您的数据长(我使用tidyr::gather),以便您可以在相同的y轴上使用这些值。然后在future之外定义aes的颜色。
library(tidyverse)
dataraw <- structure(list(CRITERIA = c("Crit1", "Crit2", "Crit3"), ACTUAL = c(2L, 3L, 1L), FUTURE = c(4L, 4L, 4L), EFFORT = c(2L, 3L, 5L)), class = "data.frame", row.names = c(NA, 3L))
data_long <- dataraw %>% gather(time, value, ACTUAL, FUTURE)
ggplot() +
geom_bar(data = filter(data_long, time == 'ACTUAL'),
mapping = aes(x = time, y = value, group = CRITERIA, fill = EFFORT),
stat = 'identity',
position = position_dodge(width = 1.01))+
geom_bar(data = filter(data_long, time == 'FUTURE'),
mapping = aes(x = time, y = value, group = CRITERIA),
fill = c('black', 'white', 'grey'),
stat = 'identity',
position = position_dodge(width = 1.01))

这看起来不太“好”,你可能可以玩的道奇宽度,当然,颜色。也许你想考虑用不同的方法谋划。也许是实际专栏后面的“未来”专栏。
由reprex package创建于2018-12-21年(v0.2.0)。
https://stackoverflow.com/questions/53877912
复制相似问题