R:如何在图表中绘制对角线

Jos*_*los 5 r ggplot2

我用 ggplot2 创建了一个图表,我想添加一条从左下角到右上角的对角线,并为这条线指定颜色。我怎样才能做到这一点?

\n\n
ggplot(data, aes(x=DRTG, y=ORTG)) +\n  geom_point(colour = "#000000") + \n  ggtitle("Gr\xc3\xa1fico: Ratio Defensivo / Ratio Ofensivo (hasta jornada 8)") +\n  geom_text(label=rownames(data), colour = "#000000", nudge_x = 0, nudge_y = 0.75, size = 4, vjust = "inward", hjust = "inward", check_overlap = F) +\n  geom_point(data=pointMedia, aes(x=mediaDRTG, y=mediaORTG, colour="red", size = 1)) + \n  geom_vline(xintercept = pointMedia[, "mediaDRTG"], colour = "green") + \n  geom_hline(yintercept = pointMedia[, "mediaORTG"], colour = "blue") +\n  geom_text(data=pointMedia, aes(x=mediaDRTG, y=mediaORTG, nudge_x = 0, nudge_y = 0.75, label="Liga DIA")) +\n  theme(legend.position = "none")\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n\n

编辑一:

\n\n

我添加了 + geom_abline(intercept = 120,lopes = 0) 但我什么也没得到:(我做错了什么?

\n\n
ggplot(data, aes(x=DRTG, y=ORTG)) +\n  geom_point(colour = "#000000") + \n  ggtitle("Gr\xc3\xa1fico: Ratio Defensivo / Ratio Ofensivo (hasta jornada 8)") +\n  geom_text(label=rownames(data), colour = "#000000", nudge_x = 0, nudge_y = 0.75, size = 4, vjust = "inward", hjust = "inward", check_overlap = F) +\n  geom_point(data=pointMedia, aes(x=mediaDRTG, y=mediaORTG, colour="red", size = 1)) + \n  geom_vline(xintercept = pointMedia[, "mediaDRTG"], colour = "green") + \n  geom_hline(yintercept = pointMedia[, "mediaORTG"], colour = "blue") +\n  geom_text(data=pointMedia, aes(x=mediaDRTG, y=mediaORTG, label="Liga DIA"), nudge_x = 0, nudge_y = 0.75) +\n  geom_abline(intercept = 120, slope = 0) +\n  theme(legend.position = "none")\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑二:

\n\n

我已将截距和斜率设置为该值,我得到了这张照片

\n\n
ggplot(data, aes(x=DRTG, y=ORTG)) +\n  geom_point(colour = "#000000") + \n  ggtitle("Gr\xc3\xa1fico: Ratio Defensivo / Ratio Ofensivo (hasta jornada 8)") +\n  geom_text(label=rownames(data), colour = "#000000", nudge_x = 0, nudge_y = 0.75, size = 4, vjust = "inward", hjust = "inward", check_overlap = F) +\n  geom_point(data=pointMedia, aes(x=mediaDRTG, y=mediaORTG, colour="red", size = 1)) + \n  geom_vline(xintercept = pointMedia[, "mediaDRTG"], colour = "green") + \n  geom_hline(yintercept = pointMedia[, "mediaORTG"], colour = "blue") +\n  geom_text(data=pointMedia, aes(x=mediaDRTG, y=mediaORTG, label="Liga DIA"), nudge_x = 0, nudge_y = 0.75) +\n  geom_abline(intercept = 11.6, slope = 1) +\n  theme(legend.position = "none")\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n\n

我想要的是线的末端位于图表的右上角。

\n\n

我想从图表的左下角到图表的右上角画一条线。

\n

Sha*_*and 2

鉴于没有人回答这个问题,我想我应该在这里添加一个,这样人们就可以快速引用它,而不是浏览评论,因为当我第一次用谷歌搜索它时,我发现这是一个有用的线程。首先,您可以快速自动地在ggplot函数上画一条线,甚至无需使用aes参数。

ggplot()+
  geom_abline()
Run Code Online (Sandbox Code Playgroud)

就像这样:

对角线

当然,这本身并不是很有用。鉴于没有给出任何可重复的数据,我可以提供一个示例,以便人们可以尝试。如果需要,我们可以使用这些iris数据在页面上画一条简单的线。

ggplot(iris,
       aes(x=Petal.Length,
           y=Petal.Width))+
  geom_point()+
  geom_abline()
Run Code Online (Sandbox Code Playgroud)

克拉波情节

当然,现在这也不是很有帮助。我们可以使其更有用的一种方法是将其应用于回归线。我们首先调用lm函数来获取斜率和截距值,然后将它们插入到geom_abline函数中,然后将其着色为蓝色。

lm(Petal.Width ~ Petal.Length,
              data = iris) # int: -0.361, slope = .4158

ggplot(iris,
       aes(x=Petal.Length,
           y=Petal.Width))+
  geom_point()+
  geom_abline(slope = .4158,
              intercept = -0.3631,
              color="blue")
Run Code Online (Sandbox Code Playgroud)

管制线

也许我们想在绘图中建立截止区域(也许有一些理论上的原因,值只能位于绘图上的某个范围内。我们可以在数据点上方和下方创建几条红色虚线。

ggplot(iris,
       aes(x=Petal.Length,
           y=Petal.Width))+
  geom_point()+
  geom_abline(slope = .4158,
              intercept = -0.3631,
              color="blue")+
  geom_abline(slope = .6,
              intercept = 0.1,
              color="red",
              linetype = "dashed")+
  geom_abline(slope = .4,
              intercept = -1,
              color="red",
              linetype = "dashed")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

实际上,有无数种使用方法及其变体,因此如果您有时间的话,geom_abline探索其他方法会很好。geom_hlinegeom_vline