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)))