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


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)


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.