如何使用qplot绘制多个系列?

时间:2010-06-01 13:10:04

标签: r ggplot2

我正在尝试使用以下数据了解如何在绘图上设置多个系列。

Year <- c('1950', '1960', '1970', '1980')
Bus <- c(10,20,30,40)
Bus.sd <- c(1.1, 2.2, 3.3, 4.4)
Car <- c(20, 20, 40, 40)
Car.sd <- c(1.1, 2.2, 3.3, 4.4)

sample_data = data.frame(Year, Bus, Bus.sd, Car, Car.sd)

qplot(Year, Bus, data=sample_data, geom="pointrange", 
ymin = Bus - Bus.sd/2, ymax = Bus + Bus.sd/2)

例如,使用上述数据,如何在不同颜色的同一图表上显示sample_data $ Bus和sample_data $ Car?

我尝试做的是:

p <- qplot(...)

然后

p <- p + qplot(...) 

我复制了上一行,但这给了我一个错误。

我不完全了解AES的工作原理。我研究了ggplot2的例子,但是在这里很难理解相关的例子。或者,如果可以使用这些数据制作堆积条(geom_bar),我认为这也可以恰当地代表它。

1 个答案:

答案 0 :(得分:0)

我希望这有帮助

gplot2最适合长格式的数据,如下所示:

  Year score  sd variable
1 1950    10 1.1      bus
2 1960    20 2.2      bus
3 1970    30 3.3      bus
4 1980    40 4.4      bus
5 1950    20 1.1      car
6 1960    20 2.2      car
7 1970    40 3.3      car
8 1980    40 4.4      car

这会将数据输入R:

data <- structure(list(Year = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 
4L), class = "factor", .Label = c("1950", "1960", "1970", "1980"
)), score = c(10, 20, 30, 40, 20, 20, 40, 40), sd = c(1.1, 2.2, 
3.3, 4.4, 1.1, 2.2, 3.3, 4.4), variable = c("bus", "bus", "bus", 
"bus", "car", "car", "car", "car")), .Names = c("Year", "score", 
"sd", "variable"), row.names = c(NA, -8L), class = "data.frame")

这将成为情节,躲闪一切。你恰当地需要躲闪,因为你的数据是重叠的。您可以使用“W”值控制闪避量。

ggplot(data, aes(x=Year, y=score,col=variable))+
geom_point(position=position_dodge(w=0.2))+
geom_pointrange(aes(ymin=score-sd, ymax=score+sd,group=Year),position=position_dodge(w=0.2))