如何增大R语言rgl包3D绘图中数据线条的间距?
解决3D图线条过密的问题
你的代码存在两处核心问题导致线条过于紧密,调整方式如下:
1. 修正错误的x轴范围
你设置了xlim = c(0, 1.5),但你的Month变量取值是1-12,这会把所有月份数据强行压缩到极小的x范围里,直接造成线条拥挤。删掉这个错误的x轴限制,让x轴适配Month的实际取值:
rgl::plot3d(df, type = "l", ylim = c(1998,2004), ylab = "Year", col = "blue")
2. 按年份分组绘制独立线条
你当前的sapply循环是重复绘制整个数据集,相当于画了7条完全重叠的线。正确的做法是按Year分组,只绘制对应年份的数据:
# 先绘制第一年的数据 rgl::plot3d(df[df$Year == 1998, ], type = "l", ylim = c(1998,2004), ylab = "Year", col = "blue") # 循环绘制剩下的年份 sapply(1999:2004, function(y) { plot3d(df[df$Year == y, ], add = TRUE, type = "l", col = "blue") })
3. 额外优化:给年份添加偏移拉大间距
如果希望线条在3D空间里更分散,可以给不同年份的x轴数值添加微小偏移,比如给每个年份的Month加一个和年份相关的偏移量:
# 给数据添加偏移后的Month列 df$Month_offset <- df$Month + (df$Year - 1998)*0.5 # 按偏移后的Month绘制 rgl::plot3d(df[df$Year == 1998, c("Month_offset", "Year", "Sat")], type = "l", ylim = c(1998,2004), ylab = "Year", col = "blue", xlab = "Month (with offset)") sapply(1999:2004, function(y) { plot3d(df[df$Year == y, c("Month_offset", "Year", "Sat")], add = TRUE, type = "l", col = "blue") })
调整后,线条会根据年份清晰分开,不会再紧密重叠。
内容的提问来源于stack exchange,提问作者Colsourie
相关产品推荐
相关产品推荐

