0

我希望生成一个覆盖在图形顶部的图形面板网格线。(我想创建一个很像 Tufte 中显示的效果)。

在此处输入图像描述

我使用 geom_segment 创建了这个,但缺点是我需要手动设置线段的高度——但我希望在刻度线的高度自动设置。

df <- data.frame(id=1:5, val=abs(rnorm(5)))

ggplot(df, aes(id, val)) + geom_bar(stat="identity") + 
 theme_tufte() + 
 geom_segment(x=-Inf, y=0:4, xend=Inf, yend=0:4, color="white")
4

1 回答 1

1

您可以从 获取刻度线位置的值layout$panel_params[[1]]$y.major_source。然后你可以在这些点上使用一条水平线。对于您的示例,它看起来像这样:

library(ggthemes)
df <- data.frame(id=1:5, val=abs(rnorm(5)))

myPlot <- ggplot() + geom_bar(data = df, aes(x = id, y = val), stat="identity") + 
  theme_tufte()

myTuftePlot <- ggplot_build(myPlot)
y.ticks <- myTuftePlot$layout$panel_params[[1]]$y.major_source
myPlot + geom_hline(aes(yintercept = y.ticks), colour = 'white')
于 2019-06-26T10:23:37.150 回答