在 ggplot 中,如何在条形图之上制作 panel.grid.major?
In ggplot, how to make panel.grid.major on top of the barplot?
我想生成一个图形面板网格线,这些网格线覆盖在图形之上。 (我想创建一种与 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")
您可以从 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')
我想生成一个图形面板网格线,这些网格线覆盖在图形之上。 (我想创建一种与 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")
您可以从 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')