如何使用Plotly将已创建的极坐标图组合为子图
R Plotly 预创建极坐标图的子图拼接实现
预生成的极坐标图无法直接通过subplot()函数拼接,核心原因是单独创建的极坐标轨迹默认全部绑定到初始polar坐标系,subplot()不会自动为极坐标类图表分配独立坐标系与画布占比,通过两步手动配置即可完成拼接,原有预创建图表的样式、数据映射都会完整保留,无需重写绘图逻辑。
操作步骤
- 从第二个极坐标图开始,为其所有轨迹指定绑定到独立命名的极坐标系,按顺序命名为
polar2/polar3即可 - 在最终合并的布局中,为每个极坐标系配置独立的画布域范围,避免图表重叠
实现代码
library(plotly) # 提前单独创建完成的两个极坐标图 p <- plot_ly(type = "barpolar", r = 1, theta = 2) p2 <- plot_ly(type = "barpolar", r = 1, theta = 20) # 为第二个图的所有轨迹指定绑定到polar2坐标系 p2$x$data <- lapply(p2$x$data, function(trace) { trace$subplot <- "polar2" trace }) # 合并图表并配置两个极坐标的排布位置,示例为左右并排 final_plot <- subplot(p, p2) %>% layout( polar = list(domain = list(x = c(0, 0.4))), # 第一个极坐标占画布左侧0-40%宽度 polar2 = list(domain = list(x = c(0.6, 1))) # 第二个极坐标占画布右侧60%-100%宽度,中间留空隙 ) # 查看最终图表 final_plot
如果需要上下排布子图,只需调整
domain中的y轴参数即可,例如第一个极坐标设domain = list(y = c(0.6, 1)),第二个极坐标设domain = list(y = c(0, 0.4))即可实现上下分栏。如果需要拼接3个及以上极坐标图,按相同规则顺延命名polar3并配置对应域范围即可。
内容的提问来源于stack exchange,提问作者MassCorr
相关产品推荐
相关产品推荐

