The ggplot
哲学很简单。绘图的每个元素都需要位于不同的图层上。因此,要获得不同线型的两条线段,您需要两个geom_segment
声明。
我用以下例子说明了同样的原理geom_bar
适合不同时期的不同颜色。
ggplot(df[df$date<=2011, ], aes(date, value, width=0.64)) +
geom_bar(stat = "identity", fill="#336699", colour="black") +
geom_bar(data=df[df$date>2011, ], aes(date, value),
stat = "identity", fill="#336699", colour="black", alpha=0.5) +
ylim(c(0,1400)) + opts(title="U.S. Smartphone Users") +
opts(
axis.text.y=theme_text(family="sans", face="bold"),
axis.text.x=theme_text(family="sans", face="bold"),
plot.title = theme_text(size=14, face="bold"),
axis.title.x=theme_text(family="sans"),
axis.title.y=theme_text(family="sans", angle=90)
) +
xlab("Year") + ylab("Users (in millions)") +
geom_segment(aes(x=2007.6, xend=2011, y=550, yend=1050), linetype=1) +
geom_segment(aes(x=2011, xend=2013, y=1050, yend=1350),
arrow=arrow(length=unit(0.4,"cm")), linetype=2)