【问题标题】:ggplot: add manually labelled tick marks on top of automatic tick marksggplot:在自动刻度线顶部添加手动标记的刻度线
【发布时间】:2018-04-04 17:03:09
【问题描述】:

我试图通过尝试以下操作来突出显示 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))

编辑:

这是我正在尝试的说明:

【问题讨论】:

标签: r ggplot2


【解决方案1】:

目前尚不清楚您希望它是什么样子,但您可以选择两种选择之一。您可以使用geom_vline()geom_segment()。 Vline 会从底部到顶部做一条线,但听起来你可能更喜欢使用段。试试这个:

+ 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

如果您不想一直画到这一点,您可以更改第一个 xendyend 参数,其中 x/y 从零开始位于边缘上方绘图窗口。

【讨论】:

  • 查看编辑后的帖子:我添加了插图。感谢您提供 geom_segment 代码。你知道如何在自动生成的标记上添加手动标记吗?
  • 查看我的编辑。我不太熟悉在绘图窗口之外写作,但我给了你一个可能有帮助的链接和解决方法。
  • 谢谢你,seeellayewhy!
猜你喜欢
  • 2015-05-11
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多