R语言Plotly等高线图多子图共用图例颜色范围异常如何修复
问题原因
你当前的色轴默认仅读取第一个子图的z值范围作为全局刻度,只要显式指定所有子图共用的全局z值上下限即可修复该问题。
修复步骤
- 先计算所有5个z矩阵的全局最小值和最大值:
# 整合所有子图的z值计算全局范围 z_all <- c( # Baseline的z值 c(8.8,11.5,20.4,11.4,14.1,23.0,16.8,19.5,28.4), # EV Currentgrid的z值 c(8.2,10.6,18.6,11.0,13.4,21.3,16.7,19.1,27.0), # EV Coal的z值 c(9.6,12.3,21.5,12.9,15.6,24.8,19.6,22.3,31.5), # EV NG的z值 c(7.4,9.7,17.1,9.6,11.9,19.4,14.2,16.4,23.9), # EV WWS的z值 c(6.4,8.3,14.5,8.5,10.4,16.6,12.8,14.6,20.9) ) global_zmin <- min(z_all) global_zmax <- max(z_all)
- 在
layout的coloraxis配置中添加cmin和cmax参数,指定全局上下限:
# 把原来的layout行替换为以下内容 fig <- fig %>% layout( coloraxis=list( colorscale='RdBu', cmin = global_zmin, cmax = global_zmax ), annotations = annotations )
- (可选)如果需要所有子图的等高线层级完全对齐,可在每个
plot_ly的参数中补充统一的contours配置:
# 每个子图的contours参数修改为如下内容 contours = list( showlabels = TRUE, labelfont = list(size = 20, color = 'black'), start = global_zmin, end = global_zmax, size = 2 # 等高线间隔可按需调整 )
修改完成后,色轴就会匹配所有子图的整体数值范围,不会再仅以第一个子图为基准。
内容的提问来源于stack exchange,提问作者T.P.
相关产品推荐
相关产品推荐

