web-dev-qa-db-fra.com

R, comment définir la taille de ggsave exactement

R question.

Je suis tellement dérouté par les width, height, dpi et unit.

Pourquoi les deux tailles suivantes différentes?

ggsave(filename = "foo.png",ggplot(mtcars, aes(x=wt, y=mpg)) +
    geom_point(size=2, shape=23),width = 5, height = 4, dpi = 300, units = "in", device='png')

et

ggsave(filename = "foo.png",ggplot(mtcars, aes(x=wt, y=mpg)) +
           geom_point(size=2, shape=23),width = 5, height = 4, dpi = 72, units = "in", device='png')

Je règle la taille de l'image 5 (pouces) * 4 (pouces). Mais pourquoi quand je change de dpi, la taille change?

Comment comprendre la relation entre height, width, unit et dpi?

Ou comment traduire ces quatre paramètres en unités de pixels, ce qui est plus facile à comprendre pour moi?

20
WCMC

Pour comprendre pourquoi le DPI est important, considérons ces deux graphiques:

ggsave(filename = "foo300.png", ggplot(mtcars, aes(x=wt, y=mpg)) +
           geom_point(size=2, shape=23) + theme_bw(base_size = 10),
       width = 5, height = 4, dpi = 300, units = "in", device='png')
ggsave(filename = "foo150.png", ggplot(mtcars, aes(x=wt, y=mpg)) +
           geom_point(size=2, shape=23) + theme_bw(base_size = 10),
       width = 10, height = 8, dpi = 150, units = "in", device='png')

Les fichiers résultants ont les mêmes dimensions en pixels, mais la taille de la police est différente. Si vous les placez sur une page ayant la même taille physique que leurs appels ggsave(), la taille de la police sera correcte (c'est-à-dire 10 comme dans l'appel ggsave()). Mais si vous les placez sur une page avec une taille physique incorrecte, la taille de la police ne sera pas de 10. Pour conserver la même taille physique et la même taille de police tout en augmentant le DPI, vous devez augmenter le nombre de pixels de l'image.

22
Marius