R 在ggplot2中自定义线型,或在线条下方添加自动箭头/符号

R 在ggplot2中自定义线型,或在线条下方添加自动箭头/符号,r,ggplot2,line,R,Ggplot2,Line,我想在ggplot中使用自定义线型。如果这是不可能的(我相信这是真的),那么我正在寻找一种聪明的方法,在我的线条上方或下方绘制箭头状的符号。 一些背景: 我想绘制一些水质数据,并将其与红线中的标准(由欧洲水框架指令设定)进行比较。以下是一些可复制的数据和我的图: df <- data.frame(datum <- seq.Date(as.Date("2014-01-01"), as.Date("2014-12-31"),by = "week"),y=rnorm(53,me

我想在ggplot中使用自定义线型。如果这是不可能的(我相信这是真的),那么我正在寻找一种聪明的方法,在我的线条上方或下方绘制箭头状的符号。

一些背景:
我想绘制一些水质数据,并将其与红线中的标准(由欧洲水框架指令设定)进行比较。以下是一些可复制的数据和我的图:

df <- data.frame(datum <- seq.Date(as.Date("2014-01-01"),
      as.Date("2014-12-31"),by = "week"),y=rnorm(53,mean=100,sd=40))

(plot1 <- 
ggplot(df, aes(x=datum,y=y)) +
  geom_line() +
  geom_point() +
  theme_classic()+ 
  geom_hline(aes(yintercept=70),colour="red"))

df我不确定请求的是什么,但听起来好像您希望根据y值大于或小于某个预期值的位置在点上或点下设置箭头。如果是这种情况,则使用
geom_段

 require(grid) # as noted by ?geom_segment
 (plot1 <- 
ggplot(df, aes(x=datum,y=y)) + geom_line()+
  geom_segment(data = data.frame( df$datum, y= 70, up=df$y >70), 
             aes(xend = datum , yend =70 + c(-1,1)[1+up]*5), #select up/down based on 'up'
                arrow = arrow(length = unit(0.1,"cm"))
              ) +                            # adjust units to modify size or arrow-heads
  geom_point() +
  theme_classic()+ 
  geom_hline(aes(yintercept=70),colour="red"))
require(grid)#如geom_段所述
(图170),
aes(xend=基准,yend=70+c(-1,1)[1+向上]*5),#根据“向上”选择向上/向下
箭头=箭头(长度=单位(0.1,“厘米”))
)+#调整单位以修改大小或箭头
几何点()+
theme_classic()+
geom_hline(aes(yintercept=70),color=“red”))


如果我对所需内容的理解是错误的,而您只需要一组向下箭头,那么只需拿出有关创建和使用“向上”的内容,并使用减号。

我不确定请求的内容,但听起来好像您需要基于y值大于或小于某个预期值的点的向上或向下箭头。如果是这种情况,则使用
geom_段

 require(grid) # as noted by ?geom_segment
 (plot1 <- 
ggplot(df, aes(x=datum,y=y)) + geom_line()+
  geom_segment(data = data.frame( df$datum, y= 70, up=df$y >70), 
             aes(xend = datum , yend =70 + c(-1,1)[1+up]*5), #select up/down based on 'up'
                arrow = arrow(length = unit(0.1,"cm"))
              ) +                            # adjust units to modify size or arrow-heads
  geom_point() +
  theme_classic()+ 
  geom_hline(aes(yintercept=70),colour="red"))
require(grid)#如geom_段所述
(图170),
aes(xend=基准,yend=70+c(-1,1)[1+向上]*5),#根据“向上”选择向上/向下
箭头=箭头(长度=单位(0.1,“厘米”))
)+#调整单位以修改大小或箭头
几何点()+
theme_classic()+
geom_hline(aes(yintercept=70),color=“red”))


如果我错了,你想要的只是一堆向下的箭头,那么就去掉关于创建和使用“向上”的内容,用减号。

x的正确间距是什么意思?老实说,即使旋转箭头(
plot1+geom_text(data=extrapoints,aes(x=datum2,y=y2,label=“>”),angle=90,color=“red”)
),也不能真正把事情弄清楚。创建彩色矩形来表示可接受范围内/之外的情况如何?@Heroka我认为一条由向下箭头组成的线清楚地表明该值应该在该线之下。我也想到了彩色矩形,例如带有
geom_ribbon
,可能会解决这个问题。但我也很好奇自定义线型是否可行,如果不可行,其他人会如何处理这个问题。x的正确间距是什么意思?老实说,即使旋转箭头(
plot1+geom_text(data=extrapoints,aes(x=datum2,y=y2,label=“>”),angle=90,color=“red”)
),也不能真正把事情弄清楚。创建彩色矩形来表示可接受范围内/之外的情况如何?@Heroka我认为一条由向下箭头组成的线清楚地表明该值应该在该线之下。我也想到了彩色矩形,例如带有
geom_ribbon
,可能会解决这个问题。但我也很好奇自定义线型是否可行,如果不可行,其他人会如何处理这个问题。我更喜欢自定义线型,但这是一个很好的选择。巧妙使用
geom_段
。谢谢恐怕“自定义线型”并没有足够的描述性或指导性来激发我的想象力。标准线型有实线、虚线、虚线等。我想知道是否可以定义自己的线型,例如由符号组成的线型。说一行aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?基本和晶格打印函数允许使用
pch
参数。我在ggplot2和pch上做了一个简单的搜索:谢谢,看起来很有趣!我更喜欢自定义线型,但这是一个非常好的选择。巧妙使用
geom_段
。谢谢恐怕“自定义线型”并没有足够的描述性或指导性来激发我的想象力。标准线型有实线、虚线、虚线等。我想知道是否可以定义自己的线型,例如由符号组成的线型。说一行aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?基本和晶格打印函数允许使用
pch
参数。我在ggplot2和pch上做了一个简单的搜索:谢谢,看起来很有趣!