Сглаживание в R-графике под Windows (как на Mac) - PullRequest
30 голосов
/ 17 мая 2011

есть ли способ вывести сглаженную графику из версии R для Windows? Как вы можете видеть из двух версий ниже, 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.

Ответы [ 3 ]

18 голосов
/ 17 мая 2011

Это, вероятно, зависит от деталей механизма рендеринга на каждой платформе, который может быть сложно изменить.Мои предложения (не проверено, из-за отсутствия времени и доступа к 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) или какой-либо другой инструмент для получения нужной сглаженной версии.
10 голосов
/ 13 января 2016

Установка cairoDevice больше не требуется для использования Cairo с 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()

enter image description here

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

enter image description here

Я использую Win 8.1 и 64-разрядную версию R 3.2.2.

9 голосов
/ 17 мая 2011

Используйте векторное устройство, такое как 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 (). Он получает высокие оценки за компактность и совместимость с веб-браузерами, хотя и является растровым форматом.

...