尝试创建一个类似于此 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,但首先我想验证我是否可以旋转。
在这个答案中,我创建了一些数据来展示其工作原理和原因。如果您有任何疑问,请告诉我。
如果您想快速得到很好的答案,最好让您的问题具有重现性。这包括示例数据,例如
或dput()
的输出以及您正在使用的任何库。看看:制作 R 可重现的问题。reprex::reprex()
您没有看到轮换的主要原因: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