Сглаживание в R-графике под Windows (согласно Mac)
Есть ли способ построить сглаженную графику из версии 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, который работает только под Windows.
Ответы
Ответ 1
Вероятно, это зависит от деталей движка рендеринга на каждой платформе, которые могут быть трудно модифицировать. Мои предложения (непроверенные, из-за нехватки времени и доступа к 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
) или какой-либо другой инструмент, чтобы получить необходимую вам сглаженную версию.
Ответ 2
Используйте векторное устройство, такое как 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()
Альтернативой для веб-вывода может быть графическое устройство png(). Он получает высокие оценки для компактности и совместимости с веб-браузером, хотя это растровый формат.
Ответ 3
Установка cairoDevice
больше не нужна для использования Каира с устройствами png
. Теперь вы можете указать 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.
Ответ 4
Вам не нужно проходить через файлы, вы можете просто установить cairoDevice, как это было предложено Ben Bolker, а затем вызвать функцию Cairo(), которая даст вам полностью сглаженное окно сюжета под Windows (хотя и медленнее).