【发布时间】:2017-01-20 16:31:50
【问题描述】:
我想在 R 中执行以下操作:我有 2 个数据集(一个由 4 个组成,另一个由 3 个值组成),我想用 ggplot2 将它们绘制为条形图(单独)。但是,我想对两者使用相同的比例,即:如果数据集 #1 的最小值是数据集 #2 的 0.2 和 0.4,那么我想对两者都使用 0.2。同样适用于最大值(在那里选择更大的值)。
所以,基本上,我想让这两个地块具有可比性。当然,也可以将通用比例应用于条形着色。现在,我使用colorRampPalette 并将其应用到scale_fill_gradient2 属性中。
下面提供的 MWE:
library("ggplot2")
val <- c(0.2, 0.35, 0.5, 0.65)
labels <- c('A', 'B', 'C', 'D')
LtoM <-colorRampPalette(c('green', 'yellow'))
df <- data.frame(val)
bar <- ggplot(data = df,
aes(x = factor(labels),
y = val,
fill = val)) +
geom_bar(stat = 'identity') +
scale_fill_gradient2(low=LtoM(100), mid='snow3',
high=LtoM(100), space='Lab') +
geom_text(aes(label = val), vjust = -1, fontface = "bold") +
labs(title = "Title", y = "Value", x = "Methods") +
theme(legend.position = "none")
print(bar)
鉴于上面的代码,以及另一个数据集,如 c(0.4, 0.8, 1.2) 和标签 c('E', 'F', 'G'),如何调整代码以创建 2 个不同且分离的图(最终保存到 PNG 中,即)但使用通用 (0.2 to 1.2)条的高度和颜色的比例(因此将图像精确地移动在一起表明具有相同高度但属于不同图像的条以相同的方式显示并且它们的颜色相同)?
【问题讨论】:
-
您可以尝试将
min(min(dataset1), min(dataset2))作为您的第一个ylim()参数。 -
非常感谢,试过了,几乎和下面的答案一样(除了调整)。
-
您可以在
scale_fill_gradient2中设置limits以保持绘图之间的填充比例相同。