web-dev-qa-db-fra.com

Parcelle R: taille et résolution

J'ai empilé dans la question: je dois tracer l'image avec DPI = 1200 et une taille d'impression spécifique.

Par défaut, le png a l'air correct ... 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()

Mais lorsque j'applique ce code, l'image devient vraiment terrible. Elle ne s'adapte pas à la taille requise. Qu'est-ce que j'ai raté? Comment "adapter" l'image à l'intrigue?

enter image description here,

56
chupvl

Un exemple reproductible:

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"
  )
}

La suggestion de James d'utiliser pointsize en combinaison avec les divers paramètres cex peut produire des résultats raisonnables.

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

Bien sûr, la meilleure solution consiste à abandonner ce tourbillon de graphiques de base et à utiliser un système qui gérera l’échelle de résolution pour vous. Par exemple,

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
)
57
Richie Cotton

Si vous souhaitez utiliser des graphiques de base, vous pouvez jeter un oeil à this . Un extrait:

Vous pouvez corriger cela avec l'argument res = de png, qui spécifie le nombre de pixels par pouce. Plus ce nombre est petit, plus la zone de tracé est grande en pouces et plus le texte par rapport au graphique lui-même est petit.

1
Fábio