R:如何在不同时间段(带点的线)之间绘制具有明显区别的线图

R:如何在不同时间段(带点的线)之间绘制具有明显区别的线图,r,plot,ggplot2,R,Plot,Ggplot2,我有一个由14个不同时间段组成的数据,我想以一种观众可以看到14个时间段所在位置的方式来绘制它。我曾经通过使用不同的颜色来实现这一点 mycolors = c(brewer.pal(name="Set2", n = 7), brewer.pal(name="Set2", n = 7)) ggplot(derv, aes(x=Date, y=derv, colour = Season)) + geom_point() + geom_abline(intercept = 0, slope =

我有一个由14个不同时间段组成的数据,我想以一种观众可以看到14个时间段所在位置的方式来绘制它。我曾经通过使用不同的颜色来实现这一点

mycolors = c(brewer.pal(name="Set2", n = 7), brewer.pal(name="Set2", n = 7))
 ggplot(derv, aes(x=Date, y=derv, colour = Season)) + 
 geom_point() +
 geom_abline(intercept = 0, slope = 0) + 
 geom_abline(intercept = neg.cut, slope = 0) + 
 geom_abline(intercept =  pos.cut, slope = 0) +
 scale_color_manual(values = mycolors) + ggtitle(" Derivative")+ylab("Derivative")

我已经使用了上面的代码来制作产品,比如plot,但是现在在一个新的报告中,我只能使用黑白方案。所以我想知道如何在R中绘制这样的图。我曾想过在14个不同的时间段使用交替线型,但我不知道如何通过ggplot实现。我试过下面的代码,但不起作用。线型保持不变

   ggplot(derv, aes(x=Date, y=derv)) + 
   geom_line() +
   geom_abline(intercept = 0, slope = 0) + 
   geom_abline(intercept = neg.cut, slope = 0) + 
   geom_abline(intercept = pos.cut, slope = 0) +
   #scale_color_manual(values = mycolors) + ggtitle("S&P 500 (Smoothed)   Derivative") + ylab("Derivative")+
  scale_linetype_manual(values = c("dashed","solid","dashed","solid","dashed","solid","dashed",
                               "solid","dashed","solid","dashed","solid","dashed","solid"))

如果您需要显示季节变化的位置,您不能只使用交替线型或交替点标记吗?请参见下面的两个示例。您可以使用不同的点标记和线型来获得所需的外观。有关创建线型的详细信息,请参见。有关附加点标记的更多信息(超出通过
pch
提供的标准标记),请参阅和。我还介绍了一种用较少代码添加三条水平行的方法

# Fake data
x = seq(0,2*pi,length.out=20*14)
dat=data.frame(time=x, y=sin(x) + sin(5*x) + cos(2*x) + cos(7*x), 
                group=0:(length(x)-1) %/% 20)

ggplot(dat, aes(time, y)) +
  geom_hline(yintercept=c(-0.5,0,0.5), colour="grey50") +
  geom_point(aes(shape=factor(group), size=factor(group))) +
  scale_shape_manual(values=rep(c(3,15),7)) +
  scale_size_manual(values=rep(c(2,1.5),7)) +
  theme_bw() + guides(shape=FALSE, size=FALSE)

ggplot(dat, aes(time, y, linetype=factor(group))) +
  geom_hline(yintercept=c(-0.5,0,0.5), colour="grey50") +
  geom_line(size=0.8) +
  scale_linetype_manual(values=rep(1:2,7)) +
  theme_bw() + guides(linetype=FALSE)

您可以分享一个可复制的示例吗?您需要将线型美学值设置为
seasure
,即
ggplot(derv,aes(x=Date,y=derv,linetype=seasure))