Anti-aliasing in R graphics under Windows (as per Mac)
is there a way to plot anti-aliased graphics from the Windows version of R? As you can see from the two versions below the Mac version of R prints graphics anti aliased....
....whereas while the Windows version anti-aliases text, it does not anti-alias the actual graphic, as can be seen from the riser points, and the grid:
Here is the code by the way:
library(scatterplot3d)
attach(mtcars)
s3d <-scatterplot3d(wt,disp,mpg, pch=1开发者_JAVA百科6, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp)
s3d$plane3d(fit)
I need the highest quality possible, for web page publication. I am running Windows 7 and pulling data from RBloomberg, which only works under Windows.
This is likely to depend on details of the rendering engine on each platform, which could be hard to modify. My suggestions (untested, for lack of time and access to Windows):
- install the
cairoDevice
package and useCairo_png()
. According to the documentation:
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).
- Render the PNG at a much higher resolution (or output data from R as PDF) and use ImageMagick (
convert
) or some other tool to get the anti-aliased version you need.
Installing cairoDevice
is no longer necessary for using Cairo with png
devices. You can now specify type='cairo'
when opening the device. Compare the following:
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()
I'm running Win 8.1, and 64-bit R 3.2.2.
Use a vector device such as pdf. First make sure you have that capability and so not surprisingly the capabilities
function is what to check. If you do have pdf then just do this:
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()
An alternative for web output might be the png() graphics device. It gets high marks for compactness and web browser compatibility although it is a raster format.
精彩评论