我正在尝试在网格中绘制多个格子图。为此,我使用以下代码:
plot <- xyplot(1:10~1:10)
page.layout <- grid.layout(nrow = 2, ncol = 1,
widths = unit(c(1), "null"),
heights = unit(c(1), "null"),
default.units = "null",
respect = FALSE,
just = "centre")
pushViewport(viewport(layout = page.layout))
pushViewport(viewport(layout.pos.row = 1))
par(mar = c(5, 4, 4, 2))
print(plot, newpage = FALSE)
popViewport()
pushViewport(viewport(layout.pos.row = 2))
par(mar = c(5, 4, 4, 2))
print(plot, newpage = FALSE)
popViewport()
Run Code Online (Sandbox Code Playgroud)
我现在想减少两个图形之间的空间,我在gridBase的小插图中读到,简单的图形控件,例如 par(mar=c())应该可以工作,但这里的情况并非如此。也许我错过了一些明显的东西,但我不明白为什么我无法控制边距参数。有什么建议么?
我对 R 比较陌生,并尝试使用点阵 xy 图绘制图形。
这是当前的图形和数据框:
Plot9Pn <- c(46, 33, 28)
Plot11Pn <- c(20, 18, 10)
Plot14Pn <- c(34, 28, 26)
Plot15Pn <- c(57, 33, 12)
Plot9Pr <- c(30, 46, 95)
Plot11Pr <- c(8, 11, 14)
Plot14Pr <- c(10, 46, 46)
Plot15Pr <- c(15, 37, 110)
Pn.vs.Pr.dat <- data.frame (x=rep (2009:2011, 8), y=c(Plot9Pr, Plot9Pn, Plot11Pr, Plot11Pn, Plot14Pr, Plot14Pn, Plot15Pr, Plot15Pn),
var=factor(rep(c("Pram","Pnem"), each=3)),
graph=factor (rep (c(" A. Plot 9", "B. Plot 11", "C. Plot 14", "D. Plot 15"), each=6)))
require(lattice) # …Run Code Online (Sandbox Code Playgroud) 我正在使用点阵生成如下图所示的图
我用来生成绘图的代码是:
xyplot(RMSE ~ Dimensions, data=afterdim,groups = paste("", Dim_Reduction),
type = "l", auto.key =list(spline = "bottom", points = FALSE, lines = TRUE),
xlab="Dimensions", ylab="RMSE",scales=list(ylim=c(0,1)))
Run Code Online (Sandbox Code Playgroud)
我想在这张图上y-axis 0.23用不同的颜色画一条水平线。添加水平线的目的是显示基线。这可以吗?

我用来绘制的示例数据是:
Dim_Reduction, Dimensions, Time, RMSE
PCA, 9, 15.39, 0.287
PCA, 8, 16.84, 0.290
PCA, 7, 14.13, 0.289
PCA, 6, 12.14, 0.292
PCA, 5, 12.54, 0.293
PCA, 4, 11.23, 0.295
ICA, 11, 20.23, 0.287
ICA, 10, 20.88, 0.288
ICA, 9, 16.34, 0.290
ICA, 8, 16.99, 0.294
ICA, 7, 14.34, 0.291
ICA, 6, 13.33, …Run Code Online (Sandbox Code Playgroud) 假设我想绘制一系列不同大小的点的图,使用xyplot如下方法:
> xyplot(1:6 ~ 1:6, cex = 1:6)
Run Code Online (Sandbox Code Playgroud)
情节就像

但是,当我将组添加到图中时,每个组内点的大小是均匀的。
> g <- c('A', 'A', 'B', 'B', 'C', 'C')
> xyplot(1:6 ~ 1:6, groups = g, cex = 1:6)
Run Code Online (Sandbox Code Playgroud)

另外,如果我使用|分组,则在每个方面,点的大小再次从第一个值开始cex
> xyplot(1:6 ~ 1:6 | g, cex = 1:6)
Run Code Online (Sandbox Code Playgroud)

那么有什么解决方案可以使我cex独立于groups和|,例如在groups示例中我希望看到像第一个图那样仅具有色差的图。
在函数内部执行此命令时,我无法将点图保存为pdf.
正常调用时工作正常:
df <- data.frame(a = runif(10), b = runif(10), c = runif(10), x = 1:10)
pdf("test.pdf")
dotplot(a + b + c ~ x, data = df, type = "l", auto.key=TRUE)
dev.off()
Run Code Online (Sandbox Code Playgroud)
但是,如果此代码在函数内部,它将无法工作,只会生成一个空的或空白的文件:
plotFunc <- function(model)
{
pdf("test.pdf")
dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE)
dev.off()
}
plotFunc(df)
Run Code Online (Sandbox Code Playgroud)
但是,在没有文件命令的情况下调用该函数将成功打印到图形窗口:
plotWinFunc <- function(model)
{
dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE)
}
plotWinFunc(df)
Run Code Online (Sandbox Code Playgroud)
这让我相信dotplot()在输出到文件时会出现问题.并且文件的类型无关紧要,我已尝试使用bmp和pdf,两种方法都不起作用.
如何成功将dotplot写入文件?我是否必须使用晶格包中的特殊命令或在某处出错?
谢谢你的帮助.
我试图在一个非常大的数据集的R中创建一个boxplot.包含数据的文件是2.5G,如果我尝试导入它会崩溃R. 幸运的是,其他一些(python)软件可以毫无问题地生成均值和方差,这就是我真正想绘制的(现在).
到目前为止我发现的每个教程都要求你输入完整的数据集,然后R计算统计数据本身,但我想知道如何将平均值,中位数,最小值,最大值等传递给bwplot只是为了绘图.我更喜欢R和晶格的原因是因为它与代码可能最终的软件套件很好地集成.如果我使用matlab或其他软件会有问题,因为它将是我们当前用户的另一个要求.
假设我在绘图上有3组,每组3个点,我需要一个黑白版本,其中3组中的3个点都用不同的符号显示.我应该如何指定panel.superpose函数?
http://www.r-bloggers.com/working-with-themes-in-lattice-graphics/ http://stat.ethz.ch/R-manual/R-devel/library/lattice/html/panel. superpose.html
当我使用时barchart(),我得到这样的东西(我知道图像不是条形图,但我auto.key产生相同的图例):

我想填充点并使它们变大或将它们设置为具有相应颜色的矩形.
当我使用时densityplot(),我得到这样的东西:

如果可能的话,我想让线条"更厚".
如果我使用包的ecdfplot()功能,latticeExtra我如何获得计算的实际值,即与~x|g输入相对应的y值?
我一直在看,?ecdfplot但没有描述它.对于通常的高级函数,ecdf()它适用于命令,plot=FALSE但这不起作用ecdfplot().
我想使用的原因ecdfplot(),而不是ecdf()在于我需要计算ecdf()为分组变量的值.我知道我也可以做到这一点,但我相信也有一条高路.
这里有一个小例子
u <- rnorm(100,0,1)
mygroup <- c(rep("group1",50),rep("group2",50))
ecdfplot(~u, groups=mygroup)
Run Code Online (Sandbox Code Playgroud)

我想为每个组提取相应x值的y值.
我正在使用晶格制作散点图矩阵,并在面板的上半部分绘制12个变量的相关系数.我还想在相关系数或星形下面添加p值,表明它们的显着性水平.这是我的R代码.我怎样才能做到这一点?提前谢谢了!
这是我的数据样本
d.corr1 = structure(list(maxt1.res = c(-0.944678376630112, 0.324463929632583,
-1.18820341118942, -0.656600399095673, 0.332432965913295, 0.696656683837386
), maxt2.res = c(1.81878373188327, -0.437581385609662, 0.305933316224282,
-3.20946216261864, 0.629812177862245, -1.49044366233353), maxt3.res = c(-1.21422295698813,
-1.31516252550763, 0.570370111383564, 1.73177495368256, 2.18742200139099,
0.413531254505875), mint1.res = c(0.783488332204165, 0.35387082927864,
-0.528584845400234, 0.772682308165534, 0.421127289975828, 1.06059010003109
), mint2.res = c(0.262876147753049, 0.588802881606123, 0.745673830291112,
-1.22383100619312, -1.01594162784602, -0.135018034667641), mint3.res = c(0.283732674541107,
-0.406567031719476, 0.390198644741853, 0.860359703924238, 1.27865614582901,
0.346477970454206), sr1.res = c(1.7258974480523, -1.71718783477085,
3.98573602228491, -4.42153098079411, 0.602511156003456, -3.07683756735513
), sr2.res = c(9.98631829246284, -6.91757809846195, 0.418977023594041,
-6.10811634134865, 14.6495418067316, 2.44365146778955), sr3.res = c(-3.8809447886743,
2.35230122374257, 2.8673756880306, 7.1449786041902, 2.07480997224678,
4.93316979213985), rain1.res …Run Code Online (Sandbox Code Playgroud)