ggplot2-将geom_segment扩展到绘图的可见范围之外

时间:2019-03-21 12:25:33

标签: r ggplot2 shiny plotly ggplotly

我正在使用ggplot和plotly为闪亮的应用程序构建图。我的数据跨越数年,但是用户可以控制日期范围,并且一次只查看少量数据。我正在尝试使用geom_segments表示事件的持续时间(具有开始和结束日期的事件)。我的问题是,除非开始日期和结束日期都在用户选择的视图范围内,否则该事件根本不会显示在绘图上。

例如,如果xend日期不在选定的视图范围内,是否可以使geom_segments出现并看起来像是在图的侧面继续?

谢谢!

更新: 相反,使用coord_cartesian似乎是正确的方法,但是现在我得到了以下视图: Plot

1 个答案:

答案 0 :(得分:1)

您需要使用coord_cartesian函数来限制绘图,但仍要保持画线...

df2 <- expand.grid(
    lineend = c('round', 'butt', 'square'),
    linejoin = c('round', 'mitre', 'bevel'),
    stringsAsFactors = FALSE
)
df2 <- data.frame(df2, y = 1:9)
ggplot(df2, aes(x = 1, y = y, xend = 2, yend = y, label = paste(lineend, linejoin))) +
    geom_segment(
        lineend = df2$lineend, linejoin = df2$linejoin,
        size = 3, arrow = arrow(length = unit(0.3, "inches"))
    ) +
    geom_text(hjust = 'outside', nudge_x = -0.2) +
    # scale_x_continuous(limits=c(0.5,1.5)) +
    coord_cartesian(xlim=c(0.5,1.5))

因此,从#中移除scale_x_continuous来查看区别。