在Windows下R图形的反锯齿处理(与Mac相同)

35

有没有办法从Windows版本的R中绘制抗锯齿图形?如下图所示,Mac版本的R绘制抗锯齿图形......

Mac Version

......然而,尽管Windows版本对文本进行了抗锯齿处理,但它没有对实际图形进行抗锯齿处理,可以从竖条和网格中看出:

Windows Version

顺便提供一下代码:

library(scatterplot3d) 
attach(mtcars) 
s3d <-scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
  type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp) 
s3d$plane3d(fit)

我需要尽可能高质量的内容,用于网页发布。我正在运行 Windows 7 并从 RBloomberg 中获取数据,而 RBloomberg 只能在 Windows 下运行。

3个回答

19

这可能取决于每个平台上呈现引擎的细节,这可能很难修改。我的建议(未经测试,因为缺乏时间和无法访问Windows):

  • 安装cairoDevice包并使用Cairo_png()函数。 根据文档:

 This functions the same as any other R graphics device. You may
 use the conventional plot commands and expect essentially the same
 output, except that everything is anti-aliased (similar to other
 vector-based devices like Quartz). Alpha-blending is supported, as
 is enhanced interactivity via ‘getGraphicsEvent’. The device
 should work the same across all supported platforms (Mac, Windows,
 and Linux).
以更高的分辨率渲染PNG(或将R输出为PDF),然后使用ImageMagick(convert)或其他工具获取所需的抗锯齿版本。

您还可以使用Cairo输出为SVG,这可能会提供更优质的输出。 - James
我(终于)让它工作了。但是是否有任何方法可以像标准设备一样保存文件或从屏幕图像中复制和粘贴?谢谢。 - Thomas Browne
一旦安装了cairoDevice,您可以在MS Windows下调用Cairo()以获得一个抗锯齿的绘图窗口。 - Thomas Browne

15

安装cairoDevice对于使用带有png设备的Cairo不再必需。现在您可以在打开设备时指定type ='cairo'。比较以下内容:

png('test1.png', 500, 500)
s3d <- scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
                     type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp) 
s3d$plane3d(fit)
dev.off()

在此输入图片描述

png('test2.png', 500, 500, type='cairo')
s3d <- scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
                     type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp) 
s3d$plane3d(fit)
dev.off()

输入图像描述

我正在使用Win 8.1和64位R 3.2.2。


9

使用矢量设备,例如pdf。首先确保您具有该功能,因此不出所料,capabilities函数是需要检查的内容。如果您拥有pdf,则只需执行以下操作:

pdf(file="out_graph.pdf")
s3d <-scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
  type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp) 
s3d$plane3d(fit)
dev.off()

对于Web输出的替代方案可能是png()图形设备。尽管它是一种光栅格式,但它在紧凑性和Web浏览器兼容性方面得到了高分。


@Joris ... 我本以为SO界面可能会自己选择一种格式。当我上传它们时,我不认为它会将我的PDF文件保留在该格式中。(但这里我可能有误。) - IRTFM
原帖作者说他需要用于网页显示,因此他可能需要一种光栅格式。 - Ben Bolker
我会懒一点,先制作一个PDF文件,然后使用ImageMagick将其转换为高分辨率的PNG格式。 - Roman Luštrik
@DWin:我也是这么想的,但上下两张图的差异很明显,而且都是png格式。 - Joris Meys
@ Joris。没错,问题出在Win7的屏幕图形设备的默认输出上。他需要强制更改格式或应用能够提高分辨率的设置。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接