R 3D打印轴刻度标签
我使用图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”选项,很像二维绘图,但我似乎无法让它工作。文档表明它应该是一个向量列表,每个面板都有位置和标签,所以我尝试: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轴看起来像垃圾 我看
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'参数在不同的上下文中有不同的用法。请参见下面的示例。