在 R 中的 plot_ly (plotly) 中获取 ylim

Posted

技术标签:

【中文标题】在 R 中的 plot_ly (plotly) 中获取 ylim【英文标题】:get ylim in plot_ly (plotly) in R 【发布时间】:2021-02-11 03:11:05 【问题描述】:

我在谷歌搜索时没有找到以下问题的答案:

问题:如何找到由plot_ly 创建的元素的轴限制(它必须隐藏在那里、某处或?)?

背景: 我正在使用 plot_ly 创建许多不同的时间线,并且我还会定期使用新数据更新它们。fig <- plot_ly(....)

现在我想将图中的几个里程碑标记为垂直线。 到目前为止,我还没有找到如何在 plot_ly 中“abline” - 没有给出最大 x 值的数字。

由于我经常更新,图中的最大值可能会随着新数据的变化而变化。 出于多种原因,我想避免在情节的所有几个不同时间线上运行max

非常感谢!

代码示例:

fig <- plot_ly(df_timeseries, x = ~date)

fig <- fig %>% add_trace(y = ~count_mice, name = "Counts of mice",
                     mode = 'lines+markers' )

fig <- fig %>% add_trace(y = ~count_cats, name = "Counts of cats",
                     mode = 'lines+markers' )

fig <- fig %>% layout(title = "<b>Count of specimen</b>",
      yaxis = list (title = "count"),
      xaxis = list (title = "date"))

# and here is the problem. I want to add a vertical line, without having to specify y1
fig.update_layout(shapes=[
dict(
  type= 'line',
  yref= 'paper', y0= 0, y1= 100,
  xref= 'x', x0= as.Date("2020-08-04"), x1= as.Date("2020-08-04")
)

fig

【问题讨论】:

你能添加一个可重现的例子吗?我没有遵循您要查找的内容。也许这只是我。您想知道如何设置坐标限制吗?还是添加垂直线?还是两者兼而有之? 亲爱的@hmhensen,感谢您的回复。是的,我只想添加垂直线而不必指定最大值。我需要根据客户的意愿反复更改情节。新数据会定期出现。因此,我不想在我正在绘制的所有列上运行“max”,因为我也必须记住更改最大值。这很容易出错,我认为这是不好的做法。 【参考方案1】:

我找到了解决办法:

请注意我们如何在数据中硬编码这些行的范围 坐标;所以当缩放和平移情节时,这条线将是 “剪裁”在这些值。如果您不希望这些行成为 剪裁,使用外部参照/yref 设置为纸的线条形状(这将 图区域在 0-1 尺度上,而不是在 x/y 数据尺度上)

来源:Horizontal/Vertical Line in plotly

这样我不需要找到最大值,我可以简单地画线,它会自动适应绘图限制。

【讨论】:

以上是关于在 R 中的 plot_ly (plotly) 中获取 ylim的主要内容,如果未能解决你的问题,请参考以下文章

r plot_ly scatter 中的自定义颜色范围

R中子图plot_ly中每个图附近的图例

为啥 plot_ly 饼图总是将 R 中的第 5 个值文本从白色变为黑色?

在 R 中使用 plot_ly 单独更改图例

如何使用R在plot_ly中为子图提供字幕

具有不同列的 R plot_ly pieplot 图例