我一直在研究R中一个相当复杂的图表.我有一个带有表面的线框,点分布在X,Y,Z空间中(例如在表面下面和上面).
问题在于情节不会"看起来"像点在表面之下.
我试图弄清楚如何最好地可视化此图表,使点看起来在表面下.线框和云的一些示例代码来自此处: R-List Posting
示例中的代码:
library(lattice)
surf <-
expand.grid(x = seq(-pi, pi, length = 50),
y = seq(-pi, pi, length = 50))
surf$z <-
with(surf, {
d <- 3 * sqrt(x^2 + y^2)
exp(-0.02 * d^2) * sin(d)
})
g <- surf
pts <- data.frame(x =rbind(2,2,2), y=rbind(-2,-2,-2), z=rbind(.5,0,-.5))
wireframe(z ~ x * y, g, aspect = c(1, .5),
drape=TRUE,
scales = list(arrows = FALSE),
pts = pts,
panel.3d.wireframe =
function(x, y, z,
xlim, ylim, zlim,
xlim.scaled, ylim.scaled, zlim.scaled,
pts, …Run Code Online (Sandbox Code Playgroud) 当绘制比完整网格更少的面板时,您将获得没有面板的间隙.大多数格子函数都将间隙放在右上角,但我想将它放在右下角,如图所示marginal.plot(见图).有没有办法让其他格子函数做同样的事情?

我知道面板顺序是由条件变量的因子级别的顺序决定的,或者通过使用index.cond参数来决定,但这对我没有帮助.我试图破译代码marginal.plot,但一直无法弄清楚,所以任何帮助表示赞赏!
为了在匹配过程之前和之后直观地显示协变量平衡,我编写了以下代码:
library(lattice)
library(gridExtra)
StandBias.df= data.frame(
Category= rep(c("A", "B", "C", "D", "E", "F"), 2),
Groups = factor(c(rep("0", 6), rep("1", 6))),
Values = c(0.26, 0.4, 0.3, 0.21, 0.6, 0.14, 0.12, -0.04, -0.23, 0.08, 0.14, -0.27))
d1<-dotplot(Category ~Values, data = StandBias.df, groups = Groups,
main = "Standardized Mean Differences", col = c("black", "grey50"), pch=c(22,15), xlab=NULL,
key=list(text=list(c("Pre-Matching", "Post-Matching")),
points=list(col = c("black", "grey50"), pch=c(22,15)),
space="bottom", border=T))
Ttest.df = data.frame(
Category= rep(c("A", "B", "C", "D", "E", "F"), 2),
Groups = factor(c(rep("0", 6), rep("1", 6))),
Values = …Run Code Online (Sandbox Code Playgroud) 我有一个all看起来像这样的数据框:
现在我想创建一个散点图,其中x轴的列标题和相应的值作为数据点.例如:
7| x
6| x x
5| x x x x
4| x x x
3| x x
2| x x
1|
---------------------------------------
STM STM STM PIC PIC PIC
cold normal hot cold normal hot
Run Code Online (Sandbox Code Playgroud)
这应该很容易,但我无法弄清楚如何.
问候
xyplot从lattice包中使用,我绘制了多年的时间序列.我想在这些年中添加一个阴影区域,以表明这段时间是"特殊的"(例如战争).
请道歉,如果这是微不足道的,但我无法弄清楚如何做到这一点,所以如果有人可以帮助我,或者至少指出我正确的方向,我会很高兴.我认为我的主要问题是我真的不知道如何处理这个问题.我对R来说还是比较新的lattice,特别是.
这是一个最小的例子:
xyplot( rnorm(100) ~ 1:100, type="l", col="black")
Run Code Online (Sandbox Code Playgroud)
在相应的图中,我想要从x绘图区域的底部到顶部的背景颜色(从45到65的值),例如浅灰色.
请注意,到目前为止我找到的解决方案使用base图形和polygon函数,但目的是遮蔽曲线下方或上方的区域,这与我想要做的不同.我不是"只是"想要遮挡我的线下方或我线以上的区域.相反,我想在给定的时间间隔内遮蔽整个背景.
如果有人能帮助我,我会非常感激!
使用这个问题中的数据/sf/ask/1516417591/我想使用histogram函数在lattice同一个图上绘制三个直方图但是单独使我可以控制颜色并允许直方图重叠的半透明颜色.
但是,以下代码不起作用:
histogram(locs[locs.col=="darkblue"] , breaks=20, xlim=c(25,150),col="darkblue" )
histogram(locs[locs.col=="yellow"] , breeaks=20, xlim=c(25,150),col="yellow",add=T ) # add doesn't work here
histogram(locsy[locs.col=="red"] , breaks=20, xlim=c(25,150),col="red",add=T )
Run Code Online (Sandbox Code Playgroud)
因为直方图不会互相添加.我知道这适用hist于基本包中的函数,所以这是我的问题:
1)有没有办法在图中添加直方图histogram?2)如何为直方图的每个实例使直方图的区间宽度相同3)如何使直方图重叠的位置的颜色半透明?4)如何将直方图旋转90度,使其频率为水平轴?
我想在格子的xyplot中为每个面板添加不同的文本.
res<- xyplot(CumSpec ~ CumTotal | Site, data=data1, index.cond=list(c(1,2,3)),layout = c(3,1,1), aspect = 1,
axis=axis.overlap, origin=0, xlab="Total number of individuals", ylab="Total number of species",
between = list(x = 0),
scales=list(tick.number = 8, cex = .9, x=list(alternating=1), x=list(rot=90)),
par.settings = my.settings,
par.strip.text=list(col="white", font=2),
panel = function(x, y) {
panel.xyplot(x, y)
panel.abline(lm(y ~ x), lwd = 0.5, lty=2)
panel.text(400, 4.6, label="R=0.334", font=1)
})
res
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用panel.text,但它将标签添加到每个面板.有谁知道怎么做到这一点,拜托?你的帮助将不胜感激.
我正在尝试通过以下代码生成带有格子xyplot的图:
set.seed(123) #### make it reproducible
df<-data.frame(x=runif(100,1,1e7),y=runif(100,0.01,.08),t=as.factor(sample(1:3,100,replace=T)))
png("xyplot_grid_misaligned.png",800,800)
p<-xyplot(y ~ x,groups=t,data=df,scales=list(x=list(log=10,equispaced.log=F)),auto.key=T,ylim=c(-.01,.1),grid=T)
print(p)
dev.off()
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,它产生了一个美丽的情节:

我希望绘图上的网格与生成的刻度线对齐equispaced.log=F.xyplot的文档只讨论grid关于多条曲线,因为这样做在SO和其他网站的一些其他线程(事实上,我得到了grid=T来自另一个站点argumment:R中使用点阵图形,甚至那里你可以看到,当equispaced.log=F使用,网格与标记"错位".
为了防止有人认为这是SO的重复:对齐 - 网格 - 线 - 轴 - 刻度 - 格 - 图形,请注意那里的问题是如何在多个图形中对齐网格(和,当时,线程还没有回答).
在使用时,如何将xyplot"对齐"网格线与x刻度equispaced.log=F?谢谢!
我想在levelplot中添加文本区域中的文本.在下面的示例中,我需要在指向位置的某处的文本.
library (raster)
library(rasterVis)
f <- system.file("external/test.grd", package="raster")
r <- raster(f)
levelplot(r)
Run Code Online (Sandbox Code Playgroud)
我试过mtext函数没有成功.有什么建议?
mtext("text", side=3, line=0)
Run Code Online (Sandbox Code Playgroud)
使用交互式选择合适的视点rgl然后在lattice3d图中采用相同的方向将是方便的.例如,给出以下使用非信息性观点的图.
library(lattice)
wireframe(volcano, screen = list(x=0, y=0, z=0))
Run Code Online (Sandbox Code Playgroud)
同样可以在打开rgl的
library(rgl)
persp3d(volcano)
view3d(0, 0)
Run Code Online (Sandbox Code Playgroud)
通过交互式,可以轻松地将绘图旋转到信息视图.
给出当前rgl视点的矩阵可以通过提取
p <- par3d()
p$userMatrix
Run Code Online (Sandbox Code Playgroud)
如何该矩阵被转换成相应的x,y,z screen参数复制在晶格的视图?
更新1
我在下面尝试了42的转换.代码显示了rgl图和每行的相应晶格图.如果我正确实现它(参见下面的代码),似乎仍然存在问题.
# convert rgl viewpoint into lattice
# screen orientation
rgl_to_lattice_viewpoint <- function()
{
p <- par3d()
rotm <- p$userMatrix
B = 360*atan(rotm[1,2]/rotm[2,2])/(2*pi)
P = 360*asin(-rotm[3,2])/(2*pi)
H = 360*atan(rotm[3,1]/rotm[3,3])/(2*pi)
list(x=-B, y=-P, z=-H)
}
# read and plot PNG image
plot_png <- function(f)
{
img …Run Code Online (Sandbox Code Playgroud)