如何在R中叠加条形图?

时间:2015-12-10 14:18:34

标签: r plot charts ggplot2 bar-chart

我正在尝试创建一个与下面相似的数字(取自Ro,Russell,& Lavie,2001)。在他们的图表中,他们绘制了反应时间条内误差(即精度)的条形图。基本上,我正在寻找的是一种在酒吧内绘制条形图的方法。

stacked bar chart

我知道创建这样的图表有几个挑战。首先,Hadley指出无法在ggplot2中创建具有两个尺度的图形,因为这些图形存在根本缺陷(参见Plot with 2 y axes, one y axis on the left, and another y axis on the right

尽管如此,带有叠加条形图的图形似乎解决了这个双重sclaing问题,我正试图想出一种在R中创建它的方法。任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:3)

通过使用par(new = T)添加到现有图表

,在基础R中相当容易
set.seed(54321) # for reproducibility

data.1 <- sample(1000:2000, 10)
data.2 <- sample(seq(0, 5, 0.1), 10)

# Use xpd = F to avoid plotting the bars below the axis
barplot(data.1, las = 1, col = "black", ylim = c(500, 3000), xpd = F)
par(new = T)
# Plot the new data with a different ylim, but don't plot the axis
barplot(data.2, las = 1, col = "white", ylim = c(0, 30), yaxt = "n")
# Add the axis on the right
axis(4, las = 1)

答案 1 :(得分:1)

library(ggplot2) data.1 <- sample(1000:2000, 10) data.2 <- sample(500:1000, 10) library(ggplot2) ggplot(mapping = aes(x, y)) + geom_bar(data = data.frame(x = 1:10, y = data.1), width = 0.8, stat = 'identity') + geom_bar(data = data.frame(x = 1:10, y = data.2), width = 0.4, stat = 'identity', fill = 'white') + theme_classic() + scale_y_continuous(expand = c(0, 0)) 中制作小节很容易。这是一些示例代码。虽然没有两个y轴(虽然看起来像here也可以这样做)。

{{1}}

enter image description here