Plotly R 如何在时间序列图上应用非对称误差条
Plotly R How to apply unsymmetrical error Bars on Time Series plot
你好,我是 R 中的 plotly 新手。
我的数据是时间序列,每个点周围有 95% 的可信区间。这个可信区间是不对称的。
我加载的包
library(ggplot2)
library(stringr)
library(dplyr)
library(plotly)
我想用 plotly 复制这个 ggplot
ggplot(summarydata, mapping = aes(x = as.Date(Date), y = c.50.))+
geom_errorbar(aes(ymin = c.2.5., ymax = c.97.5.), color ="grey", alpha = .90)+
geom_point()+
scale_x_date(date_labels = "%m-%Y")
我在 plotly 中复制它的尝试没有成功
summarydata %>%
plot_ly() %>%
add_markers(x = ~as.Date(Date), y = ~c.50.,
error_y = ~list(symmetric = FALSE,
arrayminus = c.2.5.,
array = c.97.5.,
color = '#000000'))
如您所见,绘图误差线截然不同。我不确定为什么会这样。
我最接近复制我的 ggplot 的是以下
summarydata %>%
plot_ly() %>%
add_markers(x = ~as.Date(Date), y = ~c.50.) %>%
add_markers(x= ~as.Date(Date), y = ~c.97.5., symbol = I("line-ew"), size = 1.5, color = I('rgba(128,128,128, .5)')) %>%
add_markers(x= ~as.Date(Date), y = ~c.2.5., symbol = I("line-ew"), size = 1.5, color = I('rgba(128,128,128, .5)'))
这会将条形图的刻度添加为它们自己的标记,但是当将鼠标悬停在图上时,看起来有点忙。最终我正在开发一个闪亮的应用程序,允许用户点击这些点并使用支持图表进一步检查它们。这进一步的生意并不理想
这是我正在使用的矢量示例
summarydata$c.50.[1:10]
[1] 0.6745592 0.6517352 0.6289426 0.7397868 0.7482902 0.6996212 0.6609487 NA NA NA
summarydata$Date[1:10]
[1] "2021-07-07" "2021-07-10" "2021-07-21" "2021-07-23" "2021-07-24" "2021-07-27" "2021-07-28" "2020-04-12" "2020-04-16" "2020-04-18"
summarydata$c.97.5.[1:10]
[1] 0.6879280 0.7240666 0.6506357 0.7425815 0.7500839 0.7026279 0.7130590 NA NA NA
summarydata$c.2.5.[1:10]
[1] 0.6606896 0.6062380 0.6065747 0.7367133 0.7463247 0.6953307 0.5981074 NA NA NA
我明白了。首先 error_y 需要更改值而不是值本身
add_markers(x = ~as.Date(Date), y = ~c.50.,
error_y = ~list(symmetric = FALSE,
arrayminus = c.50. - c.2.5., #The change value
array = c.97.5. - c.50.,
color = '#000000')
我的第二个问题是 error_y 不喜欢数组中缺少值。 x 和 y 丢失了并且 plotly 可以处理但是对于 error_y 它不能(我认为)
所以完整的情节模仿了 ggplot。
summarydata %>%
filter_all(all_vars(!is.na(.))) %>% #error y does not like missing values.
plot_ly() %>%
add_markers(x = ~as.Date(Date), y = ~c.50.,
error_y = ~list(symmetric = FALSE,
arrayminus = c.50. - c.2.5.,
array = c.97.5. - c.50.,
color = '#000000'))
你好,我是 R 中的 plotly 新手。
我的数据是时间序列,每个点周围有 95% 的可信区间。这个可信区间是不对称的。 我加载的包
library(ggplot2)
library(stringr)
library(dplyr)
library(plotly)
我想用 plotly 复制这个 ggplot
ggplot(summarydata, mapping = aes(x = as.Date(Date), y = c.50.))+
geom_errorbar(aes(ymin = c.2.5., ymax = c.97.5.), color ="grey", alpha = .90)+
geom_point()+
scale_x_date(date_labels = "%m-%Y")
我在 plotly 中复制它的尝试没有成功
summarydata %>%
plot_ly() %>%
add_markers(x = ~as.Date(Date), y = ~c.50.,
error_y = ~list(symmetric = FALSE,
arrayminus = c.2.5.,
array = c.97.5.,
color = '#000000'))
如您所见,绘图误差线截然不同。我不确定为什么会这样。 我最接近复制我的 ggplot 的是以下
summarydata %>%
plot_ly() %>%
add_markers(x = ~as.Date(Date), y = ~c.50.) %>%
add_markers(x= ~as.Date(Date), y = ~c.97.5., symbol = I("line-ew"), size = 1.5, color = I('rgba(128,128,128, .5)')) %>%
add_markers(x= ~as.Date(Date), y = ~c.2.5., symbol = I("line-ew"), size = 1.5, color = I('rgba(128,128,128, .5)'))
这会将条形图的刻度添加为它们自己的标记,但是当将鼠标悬停在图上时,看起来有点忙。最终我正在开发一个闪亮的应用程序,允许用户点击这些点并使用支持图表进一步检查它们。这进一步的生意并不理想
这是我正在使用的矢量示例
summarydata$c.50.[1:10]
[1] 0.6745592 0.6517352 0.6289426 0.7397868 0.7482902 0.6996212 0.6609487 NA NA NA
summarydata$Date[1:10]
[1] "2021-07-07" "2021-07-10" "2021-07-21" "2021-07-23" "2021-07-24" "2021-07-27" "2021-07-28" "2020-04-12" "2020-04-16" "2020-04-18"
summarydata$c.97.5.[1:10]
[1] 0.6879280 0.7240666 0.6506357 0.7425815 0.7500839 0.7026279 0.7130590 NA NA NA
summarydata$c.2.5.[1:10]
[1] 0.6606896 0.6062380 0.6065747 0.7367133 0.7463247 0.6953307 0.5981074 NA NA NA
我明白了。首先 error_y 需要更改值而不是值本身
add_markers(x = ~as.Date(Date), y = ~c.50.,
error_y = ~list(symmetric = FALSE,
arrayminus = c.50. - c.2.5., #The change value
array = c.97.5. - c.50.,
color = '#000000')
我的第二个问题是 error_y 不喜欢数组中缺少值。 x 和 y 丢失了并且 plotly 可以处理但是对于 error_y 它不能(我认为)
所以完整的情节模仿了 ggplot。
summarydata %>%
filter_all(all_vars(!is.na(.))) %>% #error y does not like missing values.
plot_ly() %>%
add_markers(x = ~as.Date(Date), y = ~c.50.,
error_y = ~list(symmetric = FALSE,
arrayminus = c.50. - c.2.5.,
array = c.97.5. - c.50.,
color = '#000000'))