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

如何自定义R threejs包生成的3D散点图的轴标签与刻度格式

实现方案
  • 轴标签修改:scatterplot3js原生支持xlab/ylab/zlab参数,直接传入自定义的轴名称即可完成第一个需求。
  • z轴刻度加%后缀:由于该包没有内置刻度格式化参数,我们可以通过htmlwidgets的onRender方法注入少量JavaScript代码,在图表渲染完成后批量修改z轴刻度的文本内容,添加%后缀。

完整可运行代码

library(mvtnorm)
library(threejs)
library(htmlwidgets)

u <- seq(-5, 5, by = .1)
v <- seq(-5, 5, by = .1)
M <- expand.grid(u,v)

x <- M$Var1
y <- M$Var2
sigma <- matrix(c(1, .5, .5, 1), nrow = 2, byrow = TRUE)
z <- dmvnorm(x = M, sigma = sigma)

scatterplot3js(x, y, z, phi = 40, theta = 20,
               color = rainbow(length(z)),
               colkey = FALSE,
               cex = .3,
               main = "Bivariate Normal",
               # 自定义轴标签
               xlab = "A 1",
               ylab = "B 1",
               zlab = "C 1") %>%
  # 注入JS修改z轴刻度后缀
  onRender("
    function(el, x) {
      setTimeout(function() {
        const zTicks = document.querySelectorAll('g.axis.z text');
        zTicks.forEach(tick => {
          const text = tick.textContent.trim();
          if(text && !text.endsWith('%')) {
            tick.textContent = text + '%';
          }
        });
      }, 500);
    }
  ")

如果运行时出现刻度未修改的情况,可适当调大setTimeout里的500毫秒数值,适配不同设备的渲染速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:36:08