图形尺寸
- fig.width和fig.asp设置R生成的图形(并非向文档输出的图形)的宽度和宽高比(默认黄金比例)。如果需要修改,建议只改宽高比。
- out.width和out.height设置图片在输出文档中的宽高。out.width将宽度设置为行宽的百分比,默认设置为out.width = “70%” 和fig.align = “center”。这样一来,图形既不会占用过多空间,也不会显得太拥挤。
- 如果想在一行中放置多个图形,可以将out.width设置为50%以放置2个图形、设置为33%以放置3个图形,或者设置为25%以放置4个图形,同时还要设置fig.align =“default”
- 如果想要为图形添加说明文字,可以使用fig.cap。在RMarkdown中,这样做会将图形从“内联”模式修改为“浮动”模式。
保存图形 ggsave()
可以保存为 png, pdf
# 稍详细的设置,保存到当前目录
myplot <- ggplot(mpg, aes(displ, hwy)) +
geom_point()
ggsave(
file = "./figure/mygraph.png", plot = myplot,
width = 5, height = 4, dpi = 600
)
# 简略设置,自动保存最新创建的图
ggplot(mpg, aes(displ, hwy)) +
geom_point()

ggsave(file = "./figure/mygraph.pdf")
注:由于MS office对矢量图的支持很差,当生成用于word的图像时,可以将ggsave()的参数dpi(光栅图形的分辨率)设置为600(默认为300),用于向word的高品质图形输出。
动画包 gganimate
可以保存为 gif 和 mp4 !但不是很清楚。作为示意图可用,真要高清显示还得在页面上操作 JS.
library(gganimate)
theme_set(theme_bw()) # 配合动画的默认主题
library(gapminder)
head(gapminder)
#> # A tibble: 6 x 6
#> country continent year lifeExp pop gdpPercap
#> <fct> <fct> <int> <dbl> <int> <dbl>
#> 1 Afghanistan Asia 1952 28.8 8425333 779.
#> 2 Afghanistan Asia 1957 30.3 9240934 821.
#> 3 Afghanistan Asia 1962 32.0 10267083 853.
#> 4 Afghanistan Asia 1967 34.0 11537966 836.
#> 5 Afghanistan Asia 1972 36.1 13079460 740.
#> 6 Afghanistan Asia 1977 38.4 14880372 786.
p <- ggplot(mtcars, aes(factor(cyl), mpg)) +
geom_boxplot() +
# Here comes the gganimate code
transition_states(gear,
transition_length = 2, state_length = 1
)
p <- ggplot(
gapminder,
aes(
x = gdpPercap,
y = lifeExp,
size = pop,
colour = country
)
) +
geom_point(show.legend = FALSE, alpha = 0.7) +
scale_color_viridis_d() +
scale_size(range = c(2, 12)) +
scale_x_log10() +
labs(x = "GDP per capita", y = "Life expectancy")
p

# 动画
p + transition_time(year) + labs(title = "Year: {frame_time}")

anim_save(
filename = "./figure/test.gif",
animation = last_animation(),
dpi = 600
)
# anim_save(filename = "test.mp4", animation = last_animation())
LS0tDQp0aXRsZTogImdncGxvdDItMyINCnN1YnRpdGxlOiAn5Zu+5b2i6L6T5Ye6Jw0KYXV0aG9yOiAiSHVtb29uIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogLi4vY3NzL3N0eWxlLmNzcw0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICB0aGVtZTogdW5pdGVkDQogICAgaGlnaGxpZ2h0OiBoYWRkb2NrDQogICAgbnVtYmVyX3NlY3Rpb25zOiBubw0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiA0DQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiB5ZXMNCiAgICAgIHNtb290aF9zY3JvbGw6IHllcw0KZG9jdW1lbnRjbGFzczogY3RleGFydA0KY2xhc3NvcHRpb246IGh5cGVycmVmLA0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9DQpzb3VyY2UoIi4uL1JtYXJrZG93bi10ZW1wbGF0ZS9SbWFya2Rvd25fY29uZmlnLlIiKQ0KDQojIyBnbG9iYWwgb3B0aW9ucyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICB3aWR0aCA9IGNvbmZpZyR3aWR0aCwNCiAgZmlnLndpZHRoID0gY29uZmlnJGZpZy53aWR0aCwNCiAgZmlnLmFzcCA9IGNvbmZpZyRmaWcuYXNwLA0KICBvdXQud2lkdGggPSBjb25maWckb3V0LndpZHRoLA0KICBmaWcuYWxpZ24gPSBjb25maWckZmlnLmFsaWduLA0KICBmaWcucGF0aCA9IGNvbmZpZyRmaWcucGF0aCwNCiAgZmlnLnNob3cgPSBjb25maWckZmlnLnNob3csDQogIHdhcm4gPSBjb25maWckd2FybiwNCiAgd2FybmluZyA9IGNvbmZpZyR3YXJuaW5nLA0KICBtZXNzYWdlID0gY29uZmlnJG1lc3NhZ2UsDQogIGVjaG8gPSBjb25maWckZWNobywgDQogIGV2YWwgPSBjb25maWckZXZhbCwgDQogIHRpZHkgPSBjb25maWckdGlkeSwgDQogIGNvbW1lbnQgPSBjb25maWckY29tbWVudCwgDQogIGNvbGxhcHNlID0gY29uZmlnJGNvbGxhcHNlLCANCiAgY2FjaGUgPSBjb25maWckY2FjaGUsDQogIGNhY2hlLmNvbW1lbnRzID0gY29uZmlnJGNhY2hlLmNvbW1lbnRzLA0KICBhdXRvZGVwID0gY29uZmlnJGF1dG9kZXANCikNCg0KIyMgdXNlIG5lY2Vzc2FyeSBwYWNrYWdlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShkYXRhLnRhYmxlKQ0KbGlicmFyeShtYWdyaXR0cikNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShodG1sd2lkZ2V0cykNCg0KcGFjbWFuOjpwX2xvYWQoDQogIGx1YnJpZGF0ZSwNCiAgZ2d0aGVtZXMsDQogIGdyaWRFeHRyYSwgIyDmi7zmjqUgZ2dwbG90MiDlm77lg4/nmoTljIUNCiAgc2hvd3RleHQsDQogIGNhciwgDQogIHJlYWR4bCwgDQogIHJlc2hhcGUyLCANCiAgUkNvbG9yQnJld2VyDQopDQoNCmRhdGEoY2FyOjpTYWxhcmllcykNCg0KIyMgcGxvdHRpbmcgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMg5YyF5ZCr5Zu+55qE5Luj56CB5Z2X6ZyA6KaBZmlnLnNob3d0ZXh0ID0gVFJVRemAiemhuQ0Kc2hvd3RleHRfYXV0byhlbmFibGUgPSBUUlVFKQ0Kd2luZG93c0ZvbnRzKEggPSB3aW5kb3dzRm9udCgiTWljcm9zb2Z0IFlhSGVpIikpDQpgYGANCg0KDQoNCiMjIOWbvuW9ouWwuuWvuA0KDQoqIGZpZy53aWR0aOWSjGZpZy5hc3Dorr7nva5S55Sf5oiQ55qE5Zu+5b2i77yI5bm26Z2e5ZCR5paH5qGj6L6T5Ye655qE5Zu+5b2i77yJ55qE5a695bqm5ZKM5a696auY5q+U77yI6buY6K6k6buE6YeR5q+U5L6L77yJ44CC5aaC5p6c6ZyA6KaB5L+u5pS577yM5bu66K6u5Y+q5pS55a696auY5q+U44CCDQoqIG91dC53aWR0aOWSjG91dC5oZWlnaHTorr7nva7lm77niYflnKjovpPlh7rmlofmoaPkuK3nmoTlrr3pq5jjgIJvdXQud2lkdGjlsIblrr3luqborr7nva7kuLrooYzlrr3nmoTnmb7liIbmr5TvvIzpu5jorqTorr7nva7kuLpvdXQud2lkdGggPSAiNzAlIiDlkoxmaWcuYWxpZ24gPSAiY2VudGVyIuOAgui/meagt+S4gOadpe+8jOWbvuW9ouaXouS4jeS8muWNoOeUqOi/h+WkmuepuumXtO+8jOS5n+S4jeS8muaYvuW+l+WkquaLpeaMpOOAgg0KKiDlpoLmnpzmg7PlnKjkuIDooYzkuK3mlL7nva7lpJrkuKrlm77lvaLvvIzlj6/ku6XlsIZvdXQud2lkdGjorr7nva7kuLo1MCXku6XmlL7nva4y5Liq5Zu+5b2i44CB6K6+572u5Li6MzMl5Lul5pS+572uM+S4quWbvuW9ou+8jOaIluiAheiuvue9ruS4ujI1JeS7peaUvue9rjTkuKrlm77lvaLvvIzlkIzml7bov5jopoHorr7nva5maWcuYWxpZ24gPSJkZWZhdWx0Ig0KKiDlpoLmnpzmg7PopoHkuLrlm77lvaLmt7vliqDor7TmmI7mloflrZfvvIzlj6/ku6Xkvb/nlKhmaWcuY2Fw44CC5ZyoUk1hcmtkb3du5Lit77yM6L+Z5qC35YGa5Lya5bCG5Zu+5b2i5LuO4oCc5YaF6IGU4oCd5qih5byP5L+u5pS55Li64oCc5rWu5Yqo4oCd5qih5byP44CCDQoNCg0KDQojIyDkv53lrZjlm77lvaIgZ2dzYXZlKCkNCg0K5Y+v5Lul5L+d5a2Y5Li6IHBuZywgcGRmDQoNCmBgYHtyfQ0KIyDnqI3or6bnu4bnmoTorr7nva7vvIzkv53lrZjliLDlvZPliY3nm67lvZUNCm15cGxvdCA8LSBnZ3Bsb3QobXBnLCBhZXMoZGlzcGwsIGh3eSkpICsNCiAgZ2VvbV9wb2ludCgpDQpnZ3NhdmUoDQogIGZpbGUgPSAiLi9maWd1cmUvbXlncmFwaC5wbmciLCBwbG90ID0gbXlwbG90LA0KICB3aWR0aCA9IDUsIGhlaWdodCA9IDQsIGRwaSA9IDYwMA0KKQ0KDQojIOeugOeVpeiuvue9ru+8jOiHquWKqOS/neWtmOacgOaWsOWIm+W7uueahOWbvg0KZ2dwbG90KG1wZywgYWVzKGRpc3BsLCBod3kpKSArDQogIGdlb21fcG9pbnQoKQ0KZ2dzYXZlKGZpbGUgPSAiLi9maWd1cmUvbXlncmFwaC5wZGYiKQ0KYGBgDQoNCuazqO+8mueUseS6jk1TIG9mZmljZeWvueefoumHj+WbvueahOaUr+aMgeW+iOW3ru+8jOW9k+eUn+aIkOeUqOS6jndvcmTnmoTlm77lg4/ml7bvvIzlj6/ku6XlsIZnZ3NhdmUoKeeahOWPguaVsGRwae+8iOWFieagheWbvuW9oueahOWIhui+qOeOh++8ieiuvue9ruS4ujYwMO+8iOm7mOiupOS4ujMwMO+8ie+8jOeUqOS6juWQkXdvcmTnmoTpq5jlk4HotKjlm77lvaLovpPlh7rjgIINCg0KDQoNCiMjIOWKqOeUu+WMhSBnZ2FuaW1hdGUNCg0KDQoqKuWPr+S7peS/neWtmOS4uiBnaWYg5ZKMIG1wNCDvvIHkvYbkuI3mmK/lvojmuIXmpZrjgILkvZzkuLrnpLrmhI/lm77lj6/nlKjvvIznnJ/opoHpq5jmuIXmmL7npLrov5jlvpflnKjpobXpnaLkuIrmk43kvZwgSlMuICoqDQoNCmBgYHtyfQ0KbGlicmFyeShnZ2FuaW1hdGUpDQp0aGVtZV9zZXQodGhlbWVfYncoKSkgIyDphY3lkIjliqjnlLvnmoTpu5jorqTkuLvpopgNCmxpYnJhcnkoZ2FwbWluZGVyKQ0KaGVhZChnYXBtaW5kZXIpDQoNCnAgPC0gZ2dwbG90KG10Y2FycywgYWVzKGZhY3RvcihjeWwpLCBtcGcpKSArDQogIGdlb21fYm94cGxvdCgpICsNCiAgIyBIZXJlIGNvbWVzIHRoZSBnZ2FuaW1hdGUgY29kZQ0KICB0cmFuc2l0aW9uX3N0YXRlcyhnZWFyLA0KICAgIHRyYW5zaXRpb25fbGVuZ3RoID0gMiwgc3RhdGVfbGVuZ3RoID0gMQ0KICApDQoNCnAgPC0gZ2dwbG90KA0KICBnYXBtaW5kZXIsDQogIGFlcygNCiAgICB4ID0gZ2RwUGVyY2FwLA0KICAgIHkgPSBsaWZlRXhwLA0KICAgIHNpemUgPSBwb3AsDQogICAgY29sb3VyID0gY291bnRyeQ0KICApDQopICsNCiAgZ2VvbV9wb2ludChzaG93LmxlZ2VuZCA9IEZBTFNFLCBhbHBoYSA9IDAuNykgKw0KICBzY2FsZV9jb2xvcl92aXJpZGlzX2QoKSArDQogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDEyKSkgKw0KICBzY2FsZV94X2xvZzEwKCkgKw0KICBsYWJzKHggPSAiR0RQIHBlciBjYXBpdGEiLCB5ID0gIkxpZmUgZXhwZWN0YW5jeSIpDQpwDQojIOWKqOeUuw0KcCArIHRyYW5zaXRpb25fdGltZSh5ZWFyKSArIGxhYnModGl0bGUgPSAiWWVhcjoge2ZyYW1lX3RpbWV9IikNCmFuaW1fc2F2ZSgNCiAgZmlsZW5hbWUgPSAiLi9maWd1cmUvdGVzdC5naWYiLA0KICBhbmltYXRpb24gPSBsYXN0X2FuaW1hdGlvbigpLA0KICBkcGkgPSA2MDANCikNCiMgYW5pbV9zYXZlKGZpbGVuYW1lID0gInRlc3QubXA0IiwgYW5pbWF0aW9uID0gbGFzdF9hbmltYXRpb24oKSkNCmBgYA0K