在ggplot中,如何使panel.grid.major在barplot之上?

时间:2019-06-26 09:04:48

标签: ggplot2 tufte

我希望生成覆盖在图形上方的图形面板网格线。 (我想创建一种类似于Tufte所示的效果)。

enter image description here

我是使用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")

1 个答案:

答案 0 :(得分:1)

您可以从flatMap()获取滴答休息位置的值。然后,您可以在这些点处使用一条水平线。对于您的示例,它看起来像这样:

List<String> scPairs = util.getSCMap().values().stream() //stream on the values only
                           .filter( l -> l.contains( "abc" ) ) //filter the lists
                           .flatMap( Collection::stream ) //join the individual streams
                           .collect( Collectors.toList() ); //collect the result into a single list