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

R语言lattice包wireframe绘图:坐标轴需显示实际数据而非点数

解决wireframe绘图中x轴显示实际beta值的问题

我明白你的问题啦——你希望x轴显示beta的实际取值范围(-0.5到0.5),但当前图里显示的是1到10的点索引。这是因为outer()生成的矩阵z默认用行/列的位置索引作为坐标轴刻度,而不是你定义的beta和mu的实际数值。

解决方案:手动指定坐标轴刻度

你只需要在wireframe()函数的scales参数里,为x轴(以及y轴,如果你也需要的话)设置对应的刻度位置和标签即可。具体来说:

  • at参数指定刻度在图上的位置(对应矩阵的行/列索引)
  • labels参数设置要显示的实际数值

修改后的完整代码

library(lattice) 
T <- 40 
r <- 0.02 
sigma <- 0.1 
w <- 100 
w0 <- 20 
P <- 1.0 
gamm <- 0.05 
t <- 30 
sb <- 0.10 

prop <- function(beta, mu){ 
  (mu - r) * (w - w0 - T) * exp(-r * (T - t)) * (mu - (mu - r) * exp(-2 * beta * r * (T - t))) / (gamm * r * sigma^2 * sb * (w - w0 - t)) 
} 

beta <- seq(-0.5, 0.5, length= 10) 
mu <- seq(0.04, 0.09, length= 10) 
z <- outer(beta, mu, prop) 

# 移除边框
trellis.par.set("axis.line", list(col="transparent")) 

# 修改scales参数,指定x轴和y轴的实际刻度
wireframe(z, drape=TRUE, 
          xlab = expression(paste(beta)), 
          ylab=expression(mu), 
          zlab=expression(pi(t)), 
          scale=list(arrows=FALSE,
                     x=list(at=1:length(beta), labels=round(beta, 2)),
                     y=list(at=1:length(mu), labels=round(mu, 2))))

说明

  • 我给x轴和y轴都设置了实际数值标签,用round()函数把数值保留两位小数,让刻度看起来更整洁。
  • 如果不需要保留小数,直接用labels=beta和labels=mu即可。

这样修改后,你的x轴就会显示beta的实际取值(-0.5、-0.39、...、0.5),而不是默认的索引啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:02:37