如何设置箭头标记在 Plotly for R 中旋转?

问题描述 投票:0回答:1

尝试创建一个类似于此 Windy 图的图,仅显示基于我的数据集的旋转箭头标记,其中包含日期时间 (datawx_df$obsTime) 和风向 0-360 (datawx_df$wdir)。

我的箭头打印在正确的 x 日期时间,但它们不旋转,即使我手动将角度更改为 10 这样的数字,它仍然指向下。我正在使用 Plotly 4.10.3 将跟踪添加到现有时间序列散点图:

fig <- fig %>%
      add_trace(
        x = datawx_df$obsTime,
        y = 35,
        marker = list(
          symbol = 'triangle-down-open',
          size = 10,
          angle = datawx_df$wdir,
          color = 'red'
        ),
        mode = 'markers',
        name = 'Wind Direction',
        yaxis = 'y2',
        visible = 'legendonly'
      )

我也知道角度可能需要为 -180 到 180,但首先我想验证我是否可以旋转。

r plotly
1个回答
0
投票

在这个答案中,我创建了一些数据来展示其工作原理和原因。如果您有任何疑问,请告诉我。

如果您想快速得到很好的答案,最好让您的问题具有重现性。这包括示例数据,例如

dput()
reprex::reprex()
的输出以及您正在使用的任何库。看看:制作 R 可重现的问题

您没有看到轮换的主要原因:R 的 Plotly 仍在使用 2.11 版本。 Plotly 的当前版本是 2.27。您不需要该版本即可使其工作,但您确实需要比 2.11 更新的版本。

在我的示例中,我任意选择了版本 2.21。

使用库

htmltools
,我创建了新的依赖项。

library(plotly)
library(htmltools)

newDep <- htmlDependency(name = "plotly-latest",
                         version = "2.21.1",               # "2.11.1"
                         src = list(href = "https://cdn.plot.ly"),
                         script = "plotly-2.21.0.min.js")  # "plotly-2.11.1.min.js"

对于我的绘图,这是我创建的数据。

df1 <- data.frame(Hours = 1:10,
                  Temp = 50:59,
                  Wind = seq(30, by = 30, length.out = 10))

虽然 Plotly 确实需要度数(相对于弧度),但您并不局限于 -180 到 180。

我还想指出,我使用了

triangle-right-open
,因为我希望 0 度指向每单位圆的 0 度。

要添加依赖项,您可以创建一个绘图对象并在后面添加它。但是,这里我使用 UDF 在创建绘图时添加依赖项。

注意:如果您使用

Shiny
,这种添加依赖项的方法将不起作用。

addDep <- function(plt) {   # UDF to add the new dependency
  plt$dependencies <- append(plt$dependencies, list(newDep))
  plt
}

plot_ly(type = "scatter", mode = "markers", df1, x = ~Hours, y = ~Temp,
        marker = list(symbol = "triangle-right-open", size = 10, 
                      angle = df1$Wind, color = "red")) %>% addDep() # <<-- call UDF

© www.soinside.com 2019 - 2024. All rights reserved.