繁体   English   中英

如何使用 plotly 绘制“误差圈”

[英]How to plot an "error circle" using plotly

我有一个描述已知和估计数据的路径图。 对于估计部分,我想添加显示预期误差的阴影区域(在 x 和 y 方向上相同)。

我尝试简单地使用可变sizeadd_markers

library(plotly)

data.frame(x = c(0, 1, 2, 1, 0, -1, -2, -1, 0),
           y = c(2, 1, 0, -1, -2, -1, 0, 1, 3),
           err = c(rep(NA, 6), 0.25, 0.5, 1)) %>%
  plot_ly() %>%
  add_paths(
    x = ~x,
    y = ~y
  ) %>%
  add_markers(
    x = ~x,
    y = ~y,
    size = ~err,
    marker = list(sizemode = "radius")
  )

在此处输入图片说明

然而,这是完全不够的。 err值表示“误差圆的半径”。 所以最后一点( x=0, y=3 )应该有一个从y = 2..4开始的圆,但它的半径似乎在 0.75 左右。 我可以通过修改marker.sizeref参数来解决这个问题,但还有其他问题。 由于size参数实际上是以像素计算的,因此它不受比例变化的影响:如果我放大或缩小,圆圈的大小不会改变。 并且使用缩放框改变纵横比应该会导致“错误圆圈”变成“错误椭圆”,这显然不会使用这种方法发生。

现在,我知道 plotly shapes ,但它们似乎没有椭圆,而且我不知道如何一次创建多个形状(除了使用 for 循环或类似的东西构建列表)。

那么,是否可以使用 plotly 创建这样的“错误圈”?

这绘制了我手动输入值的多个形状,如果你有很多这样的圆圈要手动输入,这可能是一个巨大的痛苦。 它确实正确地绘制了圆圈。

data.frame(x = c(0, 1, 2, 1, 0, -1, -2, -1, 0),
           y = c(2, 1, 0, -1, -2, -1, 0, 1, 3),
           err = c(rep(NA, 6), 0.25, 0.5, 1)) %>%
  plot_ly() %>%
  add_paths(
    x = ~x,
    y = ~y
  ) %>%
  layout(shapes = list(
           list(type = 'circle',
                       xref= 'x', x0 = -1, x1 = 1,
                       yref= 'y', y0 = 2, y1 = 4,
                       fillcolor = 'rgb(255,0,0)', 
                       line = list(color='rgb(255,0,0)'),
                       opacity = 0.7),
           list(type = 'circle',
                       xref= 'x', x0 = -1.5, x1 = -0.5,
                       yref= 'y', y0 = 1.5, y1 = 0.5,
                       fillcolor = 'rgb(255,0,0)', 
                       line = list(color='rgb(255,0,0)'),
                       opacity = 0.7),
           list(type = 'circle',
                       xref= 'x', x0 = -2.25, x1 = -1.75,
                       yref= 'y', y0 = 0.25, y1 = -0.25,
                       fillcolor = 'rgb(255,0,0)', 
                       line = list(color='rgb(255,0,0)'),
                       opacity = 0.7)
         ))

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM