library(magick)
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
Tambahan yang relatif baru untuk paket ini adalah perangkat grafis R asli yang menghasilkan objek gambar tenung. Ini dapat digunakan seperti perangkat biasa untuk membuat plot, atau sebagai alternatif untuk membuka perangkat yang menarik ke gambar yang ada menggunakan koordinat piksel.
Perangkat Grafis
Fungsi image_graph()membuka perangkat grafis baru yang mirip dengan misalnya png()atau x11(). Ini mengembalikan objek gambar yang plotnya akan ditulis. Setiap “halaman” di perangkat plotting akan menjadi bingkai di objek gambar.
# Produce image using graphics device
fig <- image_graph(width = 400, height = 400, res = 96)
ggplot2::qplot(mpg, wt, data = mtcars, colour = cyl)
## Warning: `qplot()` was deprecated in ggplot2 3.4.0.
Kita dapat dengan mudah melakukan pasca-proses gambar menggunakan operasi gambar biasa.
Perangkat Menggambar
Cara lain untuk menggunakan perangkat grafis adalah dengan menggambar di atas gambar yang keluar menggunakan koordinat piksel.
Secara default image_draw()atur semua margin ke 0 dan gunakan koordinat grafik untuk mencocokkan ukuran gambar dalam piksel (lebar x tinggi) di mana (0,0) adalah sudut kiri atas. Perhatikan bahwa ini berarti sumbu y bertambah dari atas ke bawah yang merupakan kebalikan dari koordinat grafis pada umumnya. Anda dapat mengganti semua ini dengan mengirimkan custom xlim, ylimatau marnilai ke image_draw.
Grafik Animasi
Perangkat grafis mendukung banyak bingkai yang membuatnya mudah untuk membuat grafik animasi. Kode di bawah ini menunjukkan bagaimana Anda akan mengimplementasikan contoh dari paket gganimate yang sangat keren menggunakan perangkat grafis magick.
library(gapminder)
## Warning: package 'gapminder' was built under R version 4.2.3
library(ggplot2)
img <- image_graph(600, 340, res = 96)
datalist <- split(gapminder, gapminder$year)
out <- lapply(datalist, function(data){
p <- ggplot(data, aes(gdpPercap, lifeExp, size = pop, color = continent)) +
scale_size("population", limits = range(gapminder$pop)) + geom_point() + ylim(20, 90) +
scale_x_log10(limits = range(gapminder$gdpPercap)) + ggtitle(data$year) + theme_classic()
print(p)
})
dev.off()
## png
## 2
animation <- image_animate(img, fps = 2, optimize = TRUE)
print(animation)
## # A tibble: 12 × 7
## format width height colorspace matte filesize density
## <chr> <int> <int> <chr> <lgl> <int> <chr>
## 1 gif 600 340 sRGB TRUE 0 96x96
## 2 gif 385 243 sRGB TRUE 0 96x96
## 3 gif 395 237 sRGB TRUE 0 96x96
## 4 gif 374 232 sRGB TRUE 0 96x96
## 5 gif 393 225 sRGB TRUE 0 96x96
## 6 gif 373 234 sRGB TRUE 0 96x96
## 7 gif 354 234 sRGB TRUE 0 96x96
## 8 gif 308 210 sRGB TRUE 0 96x96
## 9 gif 320 260 sRGB TRUE 0 96x96
## 10 gif 331 218 sRGB TRUE 0 96x96
## 11 gif 356 208 sRGB TRUE 0 96x96
## 12 gif 347 208 sRGB TRUE 0 96x96