我有这些数据:
dt1 <- structure(list(yr = 2004:2010, X = c(0.637, 0.9701, 0.701, 0.4535, 0.5058, 0.4698, 0.6228), lower = c(0.4254, 0.6442, 0.4699, 0.2929, 0.3311, 0.3213, 0.4276), upper = c(0.8614, 1.32, 0.955, 0.6261, 0.6901, 0.6276, 0.8385)), .Names = c("yr", "X", "lower", "upper"), row.names = 50:56, class = "data.frame")
dt2 <- structure(list(yr = 2004:2010, X = c(0.1753, 0.2872, 0.3038, 0.1994, 0.2486, 0.235, 0.2604), lower = c(0.1059, 0.1747, 0.1879, 0.1174, 0.1542, 0.1507, 0.1704), upper = c(0.2554, 0.4121, 0.4319, 0.2876, 0.3542, 0.3222, 0.3588)), .Names = c("yr", "X", "lower", "upper"), row.names = 8:14, class = "data.frame")
我可以像这样使用ggplot:
ggplot(dt1, aes(x=yr, y=X, group=1, ymin = lower, ymax = upper)) +
geom_ribbon(alpha = 0.2) +
geom_line() +
geom_point(shape=21, size=3, fill="blue") +
theme_gray(12) +
opts(panel.background = theme_rect(fill='grey80')) +
ylim(0,1.7)
......同样对于dt2:
现在我想在同一个图表上显示两个图。我怎么能这样做?
答案 0 :(得分:4)
我会在两个数据帧中添加一个新变量(“dt”)(基于原始数据名称),然后将它们转换为新的数据帧(dt3)
dt1[,"dt"]<-"dt1"
dt2[,"dt"]<-"dt2"
dt3<-rbind(dt1,dt2)
dt3
> yr X lower upper dt
50 2004 0.6370 0.4254 0.8614 dt1
51 2005 0.9701 0.6442 1.3200 dt1
52 2006 0.7010 0.4699 0.9550 dt1
53 2007 0.4535 0.2929 0.6261 dt1
54 2008 0.5058 0.3311 0.6901 dt1
55 2009 0.4698 0.3213 0.6276 dt1
56 2010 0.6228 0.4276 0.8385 dt1
8 2004 0.1753 0.1059 0.2554 dt2
9 2005 0.2872 0.1747 0.4121 dt2
10 2006 0.3038 0.1879 0.4319 dt2
11 2007 0.1994 0.1174 0.2876 dt2
12 2008 0.2486 0.1542 0.3542 dt2
13 2009 0.2350 0.1507 0.3222 dt2
14 2010 0.2604 0.1704 0.3588 dt2
对于这个dt3数据框,你的代码很适合将组改为新变量的名称
ggplot(dt3, aes(x=yr, y=X, group=dt, ymin = lower, ymax = upper)) +
geom_ribbon(alpha = 0.2) +
geom_line() +
geom_point(shape=21, size=3, fill="blue") +
theme_gray(12) +
opts(panel.background = theme_rect(fill='grey80')) +
ylim(0,1.7)
要更改点和线的颜色(添加:color = dt,linetype = 0,更改:而不是fill =“blue”:aes(fill = dt))。最后两行是自定义颜色。
myplot<-ggplot(dt3, aes(x=yr, y=X, group=dt, colour=dt,ymin = lower, ymax = upper)) +
geom_ribbon(alpha = 0.2, linetype=0)+ geom_line() +
geom_point(shape=21, size=3, aes(fill=dt)) +
theme_gray(12) +
opts(panel.background = theme_rect(fill='grey80')) +
ylim(0,1.7)
myplot<-myplot+ scale_color_manual(values=c("red", "blue"))
myplot<-myplot+ scale_fill_manual(values=c("red", "blue"))
myplot
答案 1 :(得分:3)
我通过反复试验找到了这个答案:
ggplot(dt1, aes(x=yr, y=X, group=1, ymin = lower, ymax = upper)) +
geom_ribbon(alpha = 0.2) +
geom_line() +
geom_point(shape=21, size=3, fill="blue") +
theme_gray(12) +
opts(panel.background = theme_rect(fill='grey80')) +
ylim(0,1.7) +
geom_path(aes(x=yr, y=X, group=1, ymin = lower, ymax = upper), data=dt2) +
geom_ribbon(alpha = 0.2, data=dt_inh) +
geom_point(shape=21, size=3, fill="red", data=dt2)
这是一个很好的方法吗?