R:如何绘制线图,明显区分不同时间段(带点线)

时间:2016-08-20 21:26:05

标签: 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 = 0) + 
 geom_abline(intercept = neg.cut, slope = 0) + 
 geom_abline(intercept =  pos.cut, slope = 0) +
 scale_color_manual(values = mycolors) + ggtitle(" Derivative")+ylab("Derivative")

enter image description here

我已经使用上面的代码来制作情节但是现在在新的报告中,我只能使用黑白方案。所以我想知道如何在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"))

1 个答案:

答案 0 :(得分:1)

如果您需要显示季节变化的地方,您是否只能使用交替线型或交替点标记?请参阅下面的两个示例。您可以使用不同的点标记和线型来获得您想要的外观。有关创建线型的更多信息,请参阅this SO answer。有关其他点标记(超出pch提供的标准点标记之外)的更多信息,请参阅,例如herehere。我还提供了一种用较少的代码添加三条水平线的方法。

# 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)

enter image description here