如何让Plotly折线图导出PNG时仅显示选中项图例?
问题
使用R语言的plotly包创建包含多条折线的折线图,通过图表自带的下载按钮导出PNG格式图片时,希望仅显示当前选中数据系列的图例,而非全部图例。以下是实现代码及部分数据:
chart2 <- plot_ly(x = Dates, y =IP, type = 'scatter', mode = 'lines', name = "", line = list(color = ) ) %>% add_trace(y = CG, name = "A", line = list(color = )) %>% add_trace(y = MC, name = "B", line = list(color = ), visible="legendonly") %>% add_trace(y = MF, name = "C", line = list(color = ), visible="legendonly") %>% add_trace(y = MM, name = "D", line = list(color = ), visible="legendonly") %>% add_trace(y = MV, name = "E", line = list(color = ), visible="legendonly") %>% add_trace(y = MO, name = "F", line = list(color = ),visible="legendonly") %>% add_trace(y = OM, name = "G", line = list(color = ), visible="legendonly") %>% add_trace(y = RI, name = "H", line = list(color = ), visible="legendonly") chart2 %>% config(toImageButtonOptions = list( format= 'png', filename= '', height= 340, width= 377, scale= 1), modeBarButtonsToRemove = list('autoScale', 'select2d', 'lasso2d'), displaylogo = FALSE) %>% layout(legend = list(x = 0.2, y= 2.1, xanchor = "center", orientation = 'h', tracegroupgap = 0, font = list(size = 9)))
部分数据:
[1] 92.1 93.2 93.6 94.7 96.0 94.7 95.8 95.9 96.0 96.2 97.1 97.8 96.9 97.3 96.8 95.9 96.2 96.2 94.4 96.8 95.5 94.2 93.5 94.2 94.2 94.5 95.3 95.1 95.5 95.9 95.2 [32] 95.6 95.9 95.3 95.9 94.4 96.0 96.1 95.4 95.8 94.2 94.2 95.8 94.7 94.4 96.8 96.5 96.8 96.7 97.2 96.9 97.8 97.8 97.8 98.7 96.6 98.1 98.6 97.5 97.5 98.3 98.1 [63] 98.0 99.4 98.1 99.0 99.5 98.3 99.7 99.9 101.6 100.5 101.2 101.2 102.0 102.3 103.8 103.7 103.5 103.8 103.9 103.6 104.6 106.2 105.6 106.3 106.9 105.4 107.3 107.4 107.6 108.4 107.9 [94] 108.7 108.1 108.5 109.5 109.3 108.8 110.1 106.9 107.0 106.1 105.6 104.8 102.3 98.5 94.9 91.0 89.0 87.8 86.6 88.7 89.2 89.4 89.5 91.6 91.3 91.5 91.5 93.1 92.6 94.3 94.7 [125] 96.5 96.6 96.2 97.0 97.2 98.0 98.9 99.6 99.1 100.1 100.2 99.8 100.4 99.0 100.0 100.1 99.1 98.8 99.1 98.5 97.7 98.4 98.2 97.4 98.3 97.4 97.7 98.4 96.6 95.8 95.1 [156] 95.6 95.2 95.3 96.4 96.6 96.8 96.8 96.0 96.4 96.6 96.1 97.4 97.2 96.9 97.6 97.0 98.6 97.8 97.3 98.1 96.4 97.4 97.1 96.8 98.2 97.6 100.3 100.4 99.4 100.2 100.4 [187] 100.9 99.7 100.3 100.8 99.9 100.1 102.7 101.1 100.6 101.6 100.2 101.2 101.1 101.2 101.4 102.9 102.6 102.5 101.9 102.7 102.4 103.2 103.6 103.2 104.7 105.5 104.9 105.9 107.8 108.1 105.8 [218] 105.0 105.2 104.9 106.3 106.0 104.6 106.2 105.3 106.2 104.3 104.6 105.6 105.5 105.5 105.0 105.4 104.5 103.9 104.4 104.5 105.0 103.8 101.8 104.2 104.0 92.6 75.1 85.3 93.8 97.8 98.3 [249] 98.9 101.3 105.4 104.3 105.8 104.2 105.0 106.2 103.8 104.0 106.1 103.3 102.6 101.7 104.5 105.9 105.0 105.6 103.8 103.9 105.0 106.2 103.8 [1] 60.4 61.3 60.4 64.3 67.2 67.3 69.6 70.5 68.1 72.2 70.1 68.4 68.9 74.7 68.1 66.1 64.0 61.8 57.7 58.5 59.6 55.5 55.7 57.1 52.4 54.6 56.8 54.2 54.3 56.0 55.7 [32] 56.8 57.3 55.1 56.4 54.4 56.6 56.5 55.3 58.3 58.2 57.6 59.0 56.6 57.1 61.2 59.3 61.0 59.9 60.1 60.8 60.1 61.4 67.3 64.0 61.6 62.5 63.9 62.8 69.2 65.4 65.4 [63] 64.2 65.5 64.1 63.8 64.7 66.4 67.2 67.1 68.3 67.6 69.6 68.4 68.9 70.5 70.0 72.9 72.5 74.1 72.9 72.9 73.6 75.4 74.3 74.2 73.6 75.6 77.8 76.2 77.0 78.9 78.9 [94] 79.4 79.0 77.7 80.4 81.2 80.3 79.5 78.7 78.0 78.1 77.7 78.5 77.5 75.3 72.1 65.3 65.8 65.1 62.8 64.2 60.9 59.4 57.9 56.5 57.2 61.5 59.3 59.1 60.8 62.6 63.0 [125] 62.3 62.6 63.0 64.2 63.1 64.4 65.7 65.5 65.6 65.4 63.2 64.0 63.7 63.0 63.9 64.6 63.5 62.8 63.7 62.9 65.5 64.0 64.2 63.3 64.8 64.1 64.8 65.0 62.0 61.8 60.8 [156] 59.9 60.2 61.1 65.5 61.3 62.1 62.5 60.7 60.5 61.0 59.0 60.5 63.1 59.2 60.3 61.0 60.2 60.6 62.5 62.2 62.8 63.6 60.6 60.1 65.4 93.5 109.5 101.5 99.0 102.7 98.6 [187] 99.9 110.1 96.3 95.8 97.2 96.0 116.2 91.2 95.0 97.2 99.6 99.8 99.8 95.1 99.6 111.3 99.8 98.7 100.5 107.3 96.8 105.7 102.0 87.5 106.2 102.6 103.9 107.6 124.7 112.8 106.7 [218] 100.9 89.0 101.6 116.7 98.4 102.8 108.8 106.2 103.8 104.2 102.1 104.9 103.7 104.4 106.4 99.9 89.1 101.5 105.9 113.8 116.7 109.9 104.8 112.4 94.8 106.7 99.8 97.3 92.0 109.7 103.1 [249] 100.6 103.8 158.0 145.8 157.6 161.9 126.4 148.6 133.6 102.5 129.5 128.9 126.3 117.6 123.0 133.9 126.2 126.1 126.6 115.6 122.7 125.9 112.8
解决方案
Plotly默认导出时会保留所有图例项,要实现仅导出当前选中的图例,需要通过自定义JavaScript监听下载按钮的点击事件,在导出前隐藏未激活的图例项,导出完成后恢复原有状态。
修改后的完整代码如下:
library(plotly) # 模拟日期向量(根据数据长度生成) Dates <- seq.Date(as.Date("2020-01-01"), by = "month", length.out = 271) # 赋值你提供的数据 IP <- c(92.1,93.2,93.6,94.7,96.0,94.7,95.8,95.9,96.0,96.2,97.1,97.8,96.9,97.3,96.8,95.9,96.2,96.2,94.4,96.8,95.5,94.2,93.5,94.2,94.2,94.5,95.3,95.1,95.5,95.9,95.2,95.6,95.9,95.3,95.9,94.4,96
相关产品推荐
相关产品推荐

