R 如何很好地重新缩放晶格图形?

R 如何很好地重新缩放晶格图形?,r,lattice,R,Lattice,当准备打印图形时,我经常需要使它们比屏幕上显示的小得多。数字的宽度只有几厘米是很常见的。使用标准图形软件包par(cex=…)可以缩小整个绘图,以适应如此小的区域,并且仍然保持比例。是否有与lattice软件包中的等效软件 基本上,如何以右面板的大小绘制下图,但保留左面板的比例 这个问题经常发生在我身上,它通常让我疯狂地用格子.PAR。获得< < /代码>和 Tr.L.Par。当发现 tRel.PAR.SET(SimeEdTrof(CEX =…))< /代码>时,我以为我已经击中了黄金,但它

当准备打印图形时,我经常需要使它们比屏幕上显示的小得多。数字的宽度只有几厘米是很常见的。使用标准图形软件包
par(cex=…)
可以缩小整个绘图,以适应如此小的区域,并且仍然保持比例。是否有与lattice软件包中的等效软件

基本上,如何以右面板的大小绘制下图,但保留左面板的比例

这个问题经常发生在我身上,它通常让我疯狂地用<代码>格子.PAR。获得< < /代码>和<代码> Tr.L.Par。当发现<代码> tRel.PAR.SET(SimeEdTrof(CEX =…))< /代码>时,我以为我已经击中了黄金,但它似乎什么也没做。 澄清
我想重新缩放绘图中的所有内容,包括字体大小、边距和刻度大小。很多。我知道我可以简单地调整
pdf(高度=…,宽度=…)
以获得我喜欢的比例,然后在排版中重新缩放,例如InDesign或文字处理器,但我觉得如果每个pdf都在文件中嵌入了其预期尺寸,我可以更好地控制。

您需要将
cex=…
传递到图例/键,不是整个情节:

这是默认设置:

xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos,
       type = "a",
       auto.key =
         list(space = "right", points = FALSE, lines = TRUE))

在键中使用
cex=0.25
时比较结果:

xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos,
       type = "a",
       auto.key =
         list(space = "right", points = FALSE, lines = TRUE, cex=0.25))

简介 有几种方法可以缩放晶格图元素的大小。一个选项是更改采用
cex
属性的所有参数,另一个选项是更改绘制所有内容的基本
fontsize
。您想要的解决方案是后一种,您将在一分钟内看到,但是通过
par.settings
参数了解如何影响绘图的各个组件也是很有意义的,因为您可能希望在设置
fontsize
时定制应用于各个组件的相对比例

tl:dr 使用@Andrie答案中的示例图

require(lattice)
plt <- xyplot(decrease ~ treatment, OrchardSprays, groups = rowpos,
              type = "a",
              auto.key = list(space = "right", points = FALSE, lines = TRUE))

(在150px x 200px PNG光栅设备上渲染)

为绘图设备的特定项目设置单个
cex
参数 <> P>一个值得注意的事情是,格子图的外观由一个完整的参数流控制,如<代码> TrLLI.PAR。GET())< /代码>

。 使用gridExtra软件包在同一设备上排列两个晶格图,我们可以看到所有这些的效果:

require("gridExtra")  ## loads package:grid too
grid.arrange(plt, plt2, ncol = 2)
导致

所以现在(几乎)所有的东西都被放大了。值得注意的一件有趣的事情是,这种方法既没有缩放图例中线条的长度,也没有缩放记号的长度。注意图的大小,每个子图的面积相同。然而,我们可以用更小的尺寸来描绘整个过程:

这是合理的,并且在基于矢量的设备(例如
pdf()
)上渲染的效果会比我在这里演示的光栅
png()
更好。第二个图是在150px×200px的设备上绘制的

设置基本
fontsize
以控制总体缩放 有一种更简单的方法,即通过
fontsize
参数设置文本和点的基本fontsize。默认值为:

> trellis.par.get("fontsize")
$text
[1] 12

$points
[1] 8
这些会影响绘图上的所有内容,因此我们可以缩小这些内容,以实现设置所有其他设置的类似效果

update(plt, par.settings = list(fontsize = list(text = 8, points = 4)))
产生


这是在与前面图2相同大小的
png()
设备上绘制的。请注意边距是如何调整的,以便更好地缩放绘图。因此,我们不仅影响了之前更改的所有设置,还影响了绘图的其他位(如间距和记号),这些位也从
fontsize
设置中获取队列。同样,在矢量设备上绘制这些图形将产生更好的输出。

谢谢,这是一个很好的观点。但是,我想重新缩放绘图中的所有内容,包括字体大小、边距和刻度大小。感谢您提供非常全面的答案!我也从中学到了一些其他的东西。太棒了!我在考虑自己去弄清楚并记录下来,但我很高兴你已经做到了。
require("gridExtra")  ## loads package:grid too
grid.arrange(plt, plt2, ncol = 2)
> trellis.par.get("fontsize")
$text
[1] 12

$points
[1] 8
update(plt, par.settings = list(fontsize = list(text = 8, points = 4)))