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

R Plotly堆叠子图:隐藏图例并添加子图坐标轴标签

在R Plotly中为子图添加独立轴标签并隐藏图例

隐藏图例

你可以通过两种方式隐藏所有子图的图例:

  • 使用全局的hide_legend()方法(你已在代码中使用)
  • 创建每个子图时直接设置showlegend = FALSE,避免额外的全局调用,示例:
fig1 <- plot_ly(x = c(3, 4, 5), y = c(1000, 1100, 1200), type = 'scatter', mode = 'lines+markers', showlegend = FALSE)

为每个子图添加独立轴标签

Plotly的subplot会自动为垂直堆叠的子图分配轴编号:3个子图对应yaxis1/yaxis2/yaxis3(y轴)、xaxis1/xaxis2/xaxis3(x轴)。你可以在layout()中针对每个轴单独设置标签和样式。

情况1:为每个子图添加左侧y轴标签(共享x轴)

保持shareX = TRUE的同时,给每个y轴设置独立标题:

library(plotly) 

fig1 <- plot_ly(x = c(3, 4, 5), y = c(1000, 1100, 1200), type = 'scatter', mode = 'lines+markers', showlegend = FALSE) 
fig2 <- plot_ly(x = c(2, 3, 4), y = c(100, 110, 120), type = 'scatter', mode = 'lines+markers', showlegend = FALSE) 
fig3 <- plot_ly(x = c(0, 1, 2), y = c(10, 11, 12), type = 'scatter', mode = 'lines+markers', showlegend = FALSE) 

fig <- subplot(fig1, fig2, fig3, nrows = 3, shareX = TRUE) %>% 
  layout(title = list(text = "Stacked Subplots"),
         plot_bgcolor='#e5ecf6', 
         # 共享x轴的样式设置
         xaxis = list( 
           zerolinecolor = '#ffff', 
           zerolinewidth = 2, 
           gridcolor = 'ffff'), 
         # 第一个子图的y轴标签
         yaxis1 = list(
           title = "数值(千)",
           zerolinecolor = '#ffff', 
           zerolinewidth = 2, 
           gridcolor = 'ffff'
         ),
         # 第二个子图的y轴标签
         yaxis2 = list(
           title = "数值(百)",
           zerolinecolor = '#ffff', 
           zerolinewidth = 2, 
           gridcolor = 'ffff'
         ),
         # 第三个子图的y轴标签
         yaxis3 = list(
           title = "数值(个)",
           zerolinecolor = '#ffff', 
           zerolinewidth = 2, 
           gridcolor = 'ffff'
         )) 

fig

情况2:为每个子图添加上方x轴标签(不共享x轴)

若需要每个子图的x轴都在上方并带有独立标签,需关闭shareX = TRUE,然后为每个x轴设置side = "top"和标题:

library(plotly) 

fig1 <- plot_ly(x = c(3, 4, 5), y = c(1000, 1100, 1200), type = 'scatter', mode = 'lines+markers', showlegend = FALSE) 
fig2 <- plot_ly(x = c(2, 3, 4), y = c(100, 110, 120), type = 'scatter', mode = 'lines+markers', showlegend = FALSE) 
fig3 <- plot_ly(x = c(0, 1, 2), y = c(10, 11, 12), type = 'scatter', mode = 'lines+markers', showlegend = FALSE) 

fig <- subplot(fig1, fig2, fig3, nrows = 3, shareX = FALSE) %>% 
  layout(title = list(text = "Stacked Subplots"),
         plot_bgcolor='#e5ecf6', 
         # 第一个子图的上方x轴标签
         xaxis1 = list(
           title = "类别A",
           side = "top",
           zerolinecolor = '#ffff', 
           zerolinewidth = 2, 
           gridcolor = 'ffff'
         ),
         # 第二个子图的上方x轴标签
         xaxis2 = list(
           title = "类别B",
           side = "top",
           zerolinecolor = '#ffff', 
           zerolinewidth = 2, 
           gridcolor = 'ffff'
         ),
         # 第三个子图的上方x轴标签
         xaxis3 = list(
           title = "类别C",
           side = "top",
           zerolinecolor = '#ffff', 
           zerolinewidth = 2, 
           gridcolor = 'ffff'
         ),
         # 统一y轴样式(也可单独设置)
         yaxis = list( 
           zerolinecolor = '#ffff', 
           zerolinewidth = 2, 
           gridcolor = 'ffff')) 

fig

内容的提问来源于stack exchange,提问作者J White

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:22:39