Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 3D打印轴刻度标签_R_Graphics_3d_Cloud_Lattice - Fatal编程技术网

R 3D打印轴刻度标签

R 3D打印轴刻度标签,r,graphics,3d,cloud,lattice,R,Graphics,3d,Cloud,Lattice,我使用图6.15中的方法在R中绘制一个3D直方图 我已经设置了scale=list(arrow=F),以便在每个轴上都有记号而不是箭头 绘图看起来不错,但我想更改轴刻度标签。我的x轴从1-26开始,y轴从1-24开始,Z轴从0-8E-6开始。理想情况下,我希望在每个离散的x和y值上都有一个标签,然后在z轴上以合理的间隔 我尝试过使用刻度选项“tick.number”,但它似乎只使用一个数字,或者使用列表中的第一个数字,因此如果我将其设置为26,则y轴上会出现多余的刻度线,而z轴看起来像垃圾 我看

我使用图6.15中的方法在R中绘制一个3D直方图

我已经设置了scale=list(arrow=F),以便在每个轴上都有记号而不是箭头

绘图看起来不错,但我想更改轴刻度标签。我的x轴从1-26开始,y轴从1-24开始,Z轴从0-8E-6开始。理想情况下,我希望在每个离散的x和y值上都有一个标签,然后在z轴上以合理的间隔

我尝试过使用刻度选项“tick.number”,但它似乎只使用一个数字,或者使用列表中的第一个数字,因此如果我将其设置为26,则y轴上会出现多余的刻度线,而z轴看起来像垃圾

我看到在比例中有一个“at”和“labels”选项,很像二维绘图,但我似乎无法让它工作。文档表明它应该是一个向量列表,每个面板都有位置和标签,所以我尝试:

at=list(c(1:26)、c(1:24)、c(2*10^-6、4*10^-6、8*10^-6))

但它抱怨说:

(list) object cannot be coerces to type 'double'
我想,如果我知道如何使用“at”,那么“label”应该变得清晰起来

编辑:

以下是示例代码:

library(latticeExtra)
Cg = 1:25
Cr = 1:25
freqs = rnorm(25, .5, .1)
cloud(freqs~Cg*Cr, xlim=c(27,-1), ylim=c(25,-1), panel.3d.cloud=panel.3dbars, par.settings=list(box.3d = list(col="transparent")), col.facet="grey",  scales=list(arrows=F))

我的数据具有不同长度的X轴和Y轴,不仅填充了对角线,还显示了轴的问题

来自
lattice
)的文档:

“at”给出了 颜色变化的切点

所以它需要是一个向量,而不是向量列表。您得到的错误是由于未能将向量列表转换为数字导致的:

at = list(c(1:26), c(1:24), c(2*10^-6, 4*10^-6, 8*10^-6))
> as.numeric(at)
Error: (list) object cannot be coerced to type 'double'

at
参数描述颜色变化的位置,类似于
levelplot
。所以它只需要一个向量

这些结果需要进一步的工作,但它确实满足了您的要求,并向您展示了将参数作为列表传递给“scales”的含义:

cloud(freqs~Cg*Cr, xlim=c(27,-1), ylim=c(25,-1),zlim=c(0,1), # needed to add zlim
   panel.3d.cloud=panel.3dbars, par.settings=list(box.3d = list(col="transparent")), 
   col.facet="grey",  
   scales=list(arrows=F, x=list(at = c(1:26), lab=c(1:26)) , 
                         y=list(at= c(1:24),  lab=c(1:24)),
                  z= list(rot=20,   # to prevent over-riding the tick marks
                          at= c(.2,.4,.8) ,      # data spans larger range
                          lab=c("2*10^-6  ", "4*10^-6  ", "8*10^-6  ") )
       )       )


z的范围根本不是那些小值所能提供的,所以你需要接受现实。如果您想重新标记比例,那么我已经向您展示了如何操作。

请添加一个可复制的示例。链接到的页面包含多个lattice和ggplot2的绘图。避免歧义,添加一个示例数据集。我注意到链接页面上的图6.15。来自cloud(lattice)文档:
Scales:描述比例的列表。与其他高级功能一样。。。它还可以包含具有特殊名称x、y和z的组件,这些组件可以是**类似列表**,特定于轴的值覆盖了比例中指定的值。
如果我给它一个长数字向量,那么它将使用相同的位置在所有3个轴上做标记。一个矢量不指示一个轴的终点和另一个轴的起点。例如,如果我这样做:
at=c(1:26,1:26,4*10^-6,4*10^-6)
,它是有效的,但是我在x轴和y轴上得到了太多的记号,而在Z轴上没有。'at'参数在不同的上下文中有不同的用法。请参见下面的示例。