You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:45:39