R сюжет: размер и разрешение - PullRequest
54 голосов
/ 06 декабря 2011

Я сложил вопрос: мне нужно построить изображение с DPI = 1200 и определенным размером печати. ​​

По умолчанию png выглядит нормально ... enter image description here

png("test.png",width=3.25,height=3.25,units="in",res=1200)
par(mar=c(5,5,2,2),xaxs = "i",yaxs = "i",cex.axis=1.3,cex.lab=1.4)
plot(perf,avg="vertical",spread.estimate="stddev",col="black",lty=3, lwd=3)
dev.off()

Но когда я применяю этот код, изображение становится действительно ужасным, оно не масштабируется (подгоняется) до необходимого размера. Что я упустил? Как «подогнать» изображение к сюжету?

enter image description here

Ответы [ 2 ]

57 голосов
/ 06 декабря 2011

Воспроизводимый пример:

the_plot <- function()
{
  x <- seq(0, 1, length.out = 100)
  y <- pbeta(x, 1, 10)
  plot(
    x,
    y,
    xlab = "False Positive Rate",
    ylab = "Average true positive rate",
    type = "l"
  )
}

Предложение Джеймса об использовании pointsize в сочетании с различными параметрами cex может дать разумные результаты.

png(
  "test.png",
  width     = 3.25,
  height    = 3.25,
  units     = "in",
  res       = 1200,
  pointsize = 4
)
par(
  mar      = c(5, 5, 2, 2),
  xaxs     = "i",
  yaxs     = "i",
  cex.axis = 2,
  cex.lab  = 2
)
the_plot()
dev.off()

Конечно, лучшим решением будет отказаться от этой игры с базовой графикой и использовать систему, которая будет обрабатывать масштабирование разрешения для вас. Например,

library(ggplot2)

ggplot_alternative <- function()
{
  the_data <- data.frame(
    x <- seq(0, 1, length.out = 100),
    y = pbeta(x, 1, 10)
  )

ggplot(the_data, aes(x, y)) +
    geom_line() +
    xlab("False Positive Rate") +
    ylab("Average true positive rate") +
    coord_cartesian(0:1, 0:1)
}

ggsave(
  "ggtest.png",
  ggplot_alternative(),
  width = 3.25,
  height = 3.25,
  dpi = 1200
)
1 голос
/ 27 января 2017

Если вы хотите использовать базовую графику, вы можете взглянуть на this .Выдержка:

Вы можете исправить это с помощью аргумента res = для png, который определяет количество пикселей на дюйм.Чем меньше это число, тем больше площадь графика в дюймах и тем меньше текст относительно самого графика.

...