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

R中persp3D轴标签Unicode下标显示异常及旋转问题求助

R plot3D绘图问题:Unicode下标显示异常与Z轴标签旋转解决方案

问题1:Unicode下标显示为方块的原因及解决方法

原因

当前绘图设备使用的字体不支持你用到的Unicode下标字符(如ₜ、₂),系统无法渲染这些字符,只能显示占位方块。

解决方法

指定一款支持完整Unicode字符集的字体,不同操作系统推荐选项:

  • Windows:"Segoe UI Symbol"
  • macOS:"Apple Symbols"
  • Linux:"DejaVu Sans"

绘图前通过par(family = "字体名称")设置即可,修改后的代码示例:

library(plot3D)
library(viridis)

# 根据操作系统选择对应字体,此处以Windows为例
par(mfrow=c(1,1), mar=c(2,0,0,6), xpd=TRUE, family="Segoe UI Symbol")

zlab <- "ΔₐᵣₜpO₂( kPa)"
persp3D(x = x, y = y, z = z, border="black", resfac=0.5,
        lwd=0.3, xlim=c(0,90), ylim=c(340,380), zlim=c(-0.2,0.8), theta=-60, phi=5, bty = "g", expand = 0.9,
        ticktype="detailed", xlab="x", ylab="y", zlab=zlab, axes=TRUE, nticks=10, col=plasma(100, begin=0.1, end=1),
        colkey = FALSE, cex.lab=2)

问题2:不使用text3D旋转Z轴标签180度

解决思路

自定义修改plot3D::persp3D函数的Z轴标签绘制逻辑,将旋转角度设为180度。该方法可自动适配theta/phi参数的变化,无需手动调整标签位置。

实现代码

library(plot3D)
library(viridis)

# 自定义persp3D函数,调整Z轴标签旋转角度
my_persp3D <- function(...) {
  # 调用原函数并隐藏默认Z轴标签
  res <- plot3D::persp3D(..., zlab = "")
  
  # 提取参数
  args <- list(...)
  zlab <- if (!is.null(args$zlab)) args$zlab else "z"
  cex.lab <- if (!is.null(args$cex.lab)) args$cex.lab else par("cex.lab")
  
  # 计算Z轴标签的适配位置
  pos <- trans3D(x = max(args$x) + diff(range(args$x))*0.15, 
                 y = mean(args$y), 
                 z = mean(args$z), 
                 pmat = res$pmat)
  
  # 绘制旋转180度的Z轴标签
  text(pos$x, pos$y, labels = zlab, cex = cex.lab, srt = 180, xpd = TRUE)
  
  return(res)
}

# 使用自定义函数绘图(结合Unicode字体设置)
par(mfrow=c(1,1), mar=c(2,0,0,6), xpd=TRUE, family="Segoe UI Symbol")
zlab <- "ΔₐᵣₜpO₂( kPa)"
my_persp3D(x = x, y = y, z = z, border="black", resfac=0.5,
           lwd=0.3, xlim=c(0,90), ylim=c(340,380), zlim=c(-0.2,0.8), theta=-60, phi=5, bty = "g", expand = 0.9,
           ticktype="detailed", xlab="x", ylab="y", zlab=zlab, axes=TRUE, nticks=10, col=plasma(100, begin=0.1, end=1),
           colkey = FALSE, cex.lab=2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:09:53