R:xlim、ylim和zlim不适用于rgl.plot3d

R:xlim、ylim和zlim不适用于rgl.plot3d,r,R,我正在尝试使用以下脚本创建三维散点图: d <- read.table(file='myfile.dat', header=F) plot3d( d, xlim=c(0,20), ylim=c(0,20), zlim=c(0,10000), xlab='Frequency', ylab='Size', zlab='Number of subgraphs', box=F, type='s', size=0.5,

我正在尝试使用以下脚本创建三维散点图:

d <- read.table(file='myfile.dat', header=F)
plot3d(
    d,
    xlim=c(0,20),
    ylim=c(0,20),
    zlim=c(0,10000),
    xlab='Frequency',
    ylab='Size',
    zlab='Number of subgraphs',
    box=F,
    type='s',
    size=0.5,
    col=d[,1]
)
lines3d(
    d,
    xlim=c(2,20),
    ylim=c(0,20),
    zlim=c(0,10000),
    lwd=2,
    col=d[,1]
)
grid3d(side=c('x', 'y+', 'z'))

正如DWin所说,
lines3d
不处理*lim参数。从帮助页面,“…材质属性(请参见rgl.Material)、法线和纹理坐标(请参见rgl.primitive)。”

因此,请使用其他功能,或者您可以从
plot3d
调用中检索现有限制,并在打印之前使用这些限制来缩放数据。

帮助页面,
?plot3d
显示“请注意,由于rgl当前不支持剪裁,因此将绘制所有点,“xlim”、“ylim”和“zlim”将仅用于增加各自的范围。”因此,您需要在输入阶段限制数据。(如果只需要打印体积内的特定范围,则需要使用
segments3d
而不是lines3d。)


d2 0&d[,1]0&d[,2]0&d[,3]一个可复制的示例(带有演示您看到的行为的数据和代码)这比图像有用得多。我这么说是因为当我在我的计算机上运行
plot3d
时,会对
xlim
等做出响应。变化很好。我猜你的抱怨是
lines3d
没有遵守你的限制,但是因为常规的
line
函数不遵守这些参数,你不应该这样做吗再想一想?为什么不使用segments3d???@DWin err,这就是我正在使用的代码。我还能提供什么呢?这是给我错误的代码。我也在为plot3d提供范围。为什么没有响应?@DWin我只是尝试在不使用lines3d的情况下打印。相同的结果。x和y的范围都在-20到40之间,这是不正确的我到底想要什么。@DWin好的,很明显,如果我将类型设置为除“s”之外的任何值,那么范围将得到尊重。这真的很奇怪。有人知道这是什么吗?请看我上面的评论。谢谢。嗯,请阅读我以前的评论。我不想剪辑数据。数据已经在我指定的范围内。问题是p当使用类型“s”时,lot3d似乎忽略了范围。结果是绘图过于精简。我阅读了您的所有注释。但是您说您收到了错误,但没有提供错误消息或对象的任何描述
d
。在这些条件下使用子集可能会更省钱,请查看我的编辑是否有帮助。错误,否。我说我没有收到错误。数据打印得很好。只是当我使用类型“s”时,轴范围是任意设置的。请注意,当我使用其他类型(如“p”)时,范围设置正确。这有助于显示我的数据吗?尽管我认为这并不重要,因为它打印得很好。我认为包含数据会有很大帮助。啊。我认为exp那就放吧。球体对于绘图来说太大了,所以它扩大了范围。谢谢。我想我就用“p”吧。
11    2    2
NA    NA    NA
10    2    2
NA    NA    NA
13    2    1
NA    NA    NA
15    2    1
NA    NA    NA
5    2    11
5    3    10
5    4    16
5    5    34
5    6    102
5    7    294
5    8    682
5    9    1439
5    10    2646
5    11    3615
5    12    2844
5    13    1394
NA    NA    NA
4    2    10
4    3    4
4    4    4
4    5    10
4    6    38
4    7    132
4    8    396
4    9    976
4    10    2121
4    11    4085
4    12    6261
4    13    6459
4    14    4238
4    15    1394
NA    NA    NA
7    2    3
NA    NA    NA
6    2    2
NA    NA    NA
9    2    8
9    3    6
9    4    4
9    5    5
NA    NA    NA
8    2    4
8    3    10
8    4    22
8    5    52
8    6    126
8    7    264
8    8    478
8    9    729
8    10    943
8    11    754
8    12    382
NA    NA    NA
d2 <- subset(d,  d[,1]>0 & d[,1] <20 & d[,2]>0 & d[,2] <20  & d[,3]>0 & d[,3]<10000 ])
plot3d(
    d2[, 1:3],  # You can probably use something more meaningful,
    xlim=c(0,20),
    ylim=c(0,20),
    zlim=c(0,10000),
    xlab='Frequency',
    ylab='Size',
    zlab='Number of subgraphs',
    box=F,
    type='s',
    size=0.5,
    col=d[,1]
)