Cara menyisipkan gambar ke setiap bilah individual dalam grafik ggplot

9

Saya mencoba untuk membandingkan pemula NBA yang berbeda di seluruh statistik yang berbeda, dan saya pikir grafik akan terlihat bagus jika saya bisa menambahkan wajah pemain di akhir grafik seperti di r / data grafik yang indah . Kode saya saat ini:

a3 %>%
  ggplot(aes(x = reorder(Player,
                         PPM),
             y = PPM)) +
  geom_bar(stat = "identity",
           aes(fill = Player)) +
  geom_text(aes(label = PPM), size = 3, position = position_dodge(width = 1),
            hjust = -0.1) +
  coord_flip() +
  theme_minimal() +
  xlab("Player") +
  ylab("Points Per Minute") +
  theme(legend.position = "none")

Seperti inilah grafik saya saat iniSuka

Pedro Guizar
sumber
2
Pernahkah Anda melihat posting blog ini, terlihat cukup relevan: jcarroll.com.au/2019/08/13/ggtext-for-images-as-x-axis-labels
Ben
2
The ggtextpaket tampaknya memungkinkan ini: github.com/clauswilke/ggtext#markdown-in-theme-elements
Jon Musim Semi
Apakah ini menjawab pertanyaan Anda? Termasuk gambar pada label sumbu dalam ggplot2 animasi
Tjebo

Jawaban:

7

Anda tidak memberikan reprex, jadi saya perlu membuat sesuatu. Saya mungkin akan melakukannya seperti ini.

library(tidyverse)
library(ggtextures)
library(magick)
#> Linking to ImageMagick 6.9.9.39
#> Enabled features: cairo, fontconfig, freetype, lcms, pango, rsvg, webp
#> Disabled features: fftw, ghostscript, x11

data <- tibble(
  count = c(5, 6, 6, 4, 2, 3),
  animal = c("giraffe", "elephant", "horse", "bird", "turtle", "dog"),
  image = list(
    image_read_svg("http://steveharoz.com/research/isotype/icons/giraffe.svg"),
    image_read_svg("http://steveharoz.com/research/isotype/icons/elephant.svg"),
    image_read_svg("http://steveharoz.com/research/isotype/icons/horse.svg"),
    image_read_svg("http://steveharoz.com/research/isotype/icons/bird.svg"),
    image_read_svg("http://steveharoz.com/research/isotype/icons/turtle.svg"),
    image_read_svg("http://steveharoz.com/research/isotype/icons/dog.svg")
  )
)

ggplot(data, aes(animal, count, fill = animal, image = image)) +
  geom_isotype_col(
    img_height = grid::unit(1, "null"), img_width = NULL,
    ncol = 1, nrow = 1, hjust = 1, vjust = 0.5
  ) +
  coord_flip() +
  guides(fill = "none") +
  theme_minimal()

Dibuat pada 2019-11-03 oleh paket reprex (v0.3.0)

Claus Wilke
sumber
Terima kasih, ini berhasil! Saya ingin bertanya apakah mungkin untuk menampilkan dua gambar pada bilah yang sama di sini (saya berasumsi dengan mengacaukan nilai hjust) dengan memiliki sesuatu seperti ini: ggplot (data, aes (hewan, hitungan, isi = hewan, image = image & x))
Pedro Guizar
Silakan kirim pertanyaan tingkat atas yang terpisah untuk ini.
Claus Wilke
Baru saja melakukan @Claus Wilke stackoverflow.com/questions/58793147/…
Pedro Guizar
Ini sangat berguna. Apakah ada rencana untuk mendapatkan ggtextures pada CRAN?
stevec
Tidak. Sekarang ada ggpattern yang jauh lebih kuat. github.com/coolbutuseless/ggpattern
Claus Wilke