plotly - plotly中的动态形状选择
问题描述
为了突出显示时间序列中的区域,我使用layout > shapes
对象,如下所述:如何在 plotly.js 图表中添加彩色背景条
现在这些背景形状中的每一个都有一个“类型”,我希望用户能够显示/隐藏特定类型,就像使用痕迹一样(例如,仅显示 V4 和 V5,隐藏 V3,如下例所示)。
这可能吗?
解决方案
这原则上可以通过使用形状的轨迹插入来指定背景区域来实现。这样背景区域就会出现在图例中。使用一些随机示例数据试试这个:
library(plotly)
set.seed(42)
d <- data.frame(
x=as.Date(c('2015-02-01', '2015-02-02', '2015-02-03', '2015-02-04', '2015-02-05',
'2015-02-06', '2015-02-07', '2015-02-08', '2015-02-09', '2015-02-10',
'2015-02-11', '2015-02-12', '2015-02-13', '2015-02-14', '2015-02-15',
'2015-02-16', '2015-02-17', '2015-02-18', '2015-02-19', '2015-02-20',
'2015-02-21', '2015-02-22', '2015-02-23', '2015-02-24', '2015-02-25',
'2015-02-26', '2015-02-27', '2015-02-28')),
y=runif(28, 350, 550)
)
d
range_y <- list(min = floor(min(d$y) / 100) * 100, max = ceiling(max(d$y) / 100) * 100)
shape1 <- data.frame(x = as.Date(c('2015-02-01', '2015-02-08')), y = c(range_y$max, range_y$max))
shape2 <- data.frame(x = as.Date(c('2015-02-23', '2015-02-27')), y = c(range_y$max, range_y$max))
plot_ly(x=~x, y=~y) %>%
add_trace(data = d, mode = "lines+markers", type = "scatter") %>%
add_trace(data = shape1, mode = "none", fill = "tozeroy", name = "type1") %>%
add_trace(data = shape2, mode = "none", fill = "tozeroy", name = "type2") %>%
layout(yaxis = list(range = c(range_y$min, range_y$max)))
推荐阅读
- node.js - 如何为多个商家运行自定义 Shopify 应用
- android - 设备上的定位服务被禁用 [Flutter geolocator v6.1.4]
- java - 在python中加密pdf文件并在java中使用AES_GCM模式解密该pdf文件
- c++ - 为什么 constexpr 应该是静态的?
- typescript - 推断递归数组类型
- arrays - munmap_chunk():释放数组中的结构时指针无效
- c++ - This->DataContext not working in uwp c++/cf in Visual Studio 2019 in C++
- c - 如何限制用户输入任何 4 位组合,包括以 0 开头的组合并排除 C 中的所有其他字符?
- ruby-on-rails - 通过链接验证匿名用户访问
- python - 从 df 中按类别抽取随机子样本