在 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的主要内容,如果未能解决你的问题,请参考以下文章