如何为R语言persp3d绘制的3D图设置自定义轴刻度标签
解决方法
你之前调用bbox3d的用法有误,它的xlab参数用于设置轴标题,无法自定义刻度标签。要将x轴替换为信用评级标签,按以下逻辑调整代码即可:
- 先定义与X序列顺序完全对应的评级标签,长度需和评级维度的样本数(
dim(aggregate_row)[1])匹配 - 调用
persp3d时关闭默认x轴刻度 - 调用
axis3d手动注入自定义x轴刻度
你提供的场景对应的调整后代码如下:
Y <- c(1:dim(aggregate_row)[2]) # 时间期限维度 X <- c(1:dim(aggregate_row)[1]) # 信用评级维度 Z <- as.matrix.data.frame(aggregate_row) # 颜色映射逻辑保持不变 cc <- colorRamp(rev(rainbow(10))) Zsc <- (Z-min(Z))/diff(range(Z)) rgbvec2col <- function(x) do.call(rgb,c(as.list(x),list(max=500))) colvec <- apply(cc(Zsc),1,rgbvec2col) # 自定义评级标签,按你实际的评级顺序调整,长度和X的数量完全匹配 rating_labels <- c("AAA", "AA+", "AA", "AA-", "A+", "A", "A-", "BBB+", "BBB", "BBB-", "BB+", "BB", "BB-", "B+", "B", "B-", "CCC+", "CCC", "CCC-") # 绘制3D图,同时关闭默认x轴刻度 persp3d(X,Y,Z,col=colvec, xlab="Ratings",ylab="tenor",zlab="Default Rate", front="lines",back="lines", xat = NA) # 手动添加自定义x轴刻度,可调整cex参数控制标签字号避免拥挤 axis3d(edge = "x", at = X, labels = rating_labels, cex = 0.7)
如果你后续改用surface3d绘制图形,逻辑完全一致,绘制完成后调用axis3d添加自定义刻度即可。
你当前生成的默认数值刻度3D图效果如下:
内容的提问来源于stack exchange,提问作者Aurelio
相关产品推荐
相关产品推荐

