ggplot:在自动刻度线上添加手动标记的刻度线

时间:2018-04-04 17:03:09

标签: r ggplot2

我试图通过尝试以下方法突出显示y值最低的点: 1)从这一点向下绘制一条线到x轴,另一条线到y轴;和 2)分别在x轴和y轴上添加一个手动刻度线,该点的x和y值。除了两个轴上的自动刻度标记外,还必须添加此手动刻度线。

示例数据:

df <- data.frame(x=1:100,y=rnorm(100,10,1))
ggplot(df) +
  geom_point(aes(x=x,y=y))

编辑:

以下是我正在尝试的内容的说明:

enter image description here

1 个答案:

答案 0 :(得分:0)

目前还不清楚你想要它的样子,但你可以做两种选择之一。您可以使用geom_vline()geom_segment()。 Vline将从底部到顶部执行一条线,但听起来您可能更喜欢使用segment。试试这个:

+ geom_segment(x = min(x), xend = min(x), y = 0, yend = 1)

如果您更改yend参数,则可以使标记更小或更大。为最大值绘制一个应该就像交换min()参数的max()参数一样简单。或者您可以手动输入值。或者,您可以添加一个vline来使用面板的完整高度:

+ geom_vline(xintercept = min(x))

您可以阅读有关here的更多信息。如果这没有多大帮助,你可以提供一个正确的reprex,也许你想要的输出草图,我们可以修改该代码,使其更接近你想要的。

编辑:

在绘图窗口外写字有点困难,但this链接可能会对您有所帮助。我已经尝试了一些,并且总是发现在我的情况下使用不同的解决方案更容易。这是一个选项:

library(ggplot2)

set.seed(123)  # so we have the same toy data

df <- data.frame(x=1:100,y=rnorm(100,10,1))

ggplot(df) +
  geom_point(aes(x=x,y=y)) +
  geom_segment(x=0, xend=18, y=8.033383, yend=8.033383) +  # draw to x axis
  geom_segment(x=18, xend=18, y=0, yend=8.033383) +  # draw to y axis
  annotate("text", 18.2, 8.2, label="(8, 8.03)", size=3)  # ordered pair just above it

如果你不想一直画到这一点,你可以改变xend / yend开头的第一个xy参数零点刚好位于绘图窗口的边缘之上。