วิธีการแทรกรูปภาพลงในแต่ละแถบในกราฟ ggplot


9

ฉันพยายามที่จะเปรียบเทียบล่วงหน้าเอ็นบีเอที่แตกต่างกันทั่วสถิติที่แตกต่างกันและฉันคิดว่ากราฟจะดูดีถ้าฉันสามารถเพิ่มใบหน้าของผู้เล่นในตอนท้ายของกราฟเหมือนในR / กราฟ รหัสของฉันคือตอนนี้:

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")

นี่คือลักษณะกราฟของฉันในปัจจุบันชอบ


2
คุณเคยเห็นโพสต์บล็อกนี้ค่อนข้างมีความเกี่ยวข้อง: jcarroll.com.au/2019/08/13/ggtext-for-images-as-x-axis-labels
Ben

2
ggtextแพคเกจดูเหมือนว่าจะปล่อยให้เรื่องนี้: github.com/clauswilke/ggtext#markdown-in-theme-elements
จอนฤดูใบไม้ผลิ

นี่ตอบคำถามของคุณหรือไม่? รวมถึงภาพบนฉลากแกนใน ggplot2 แบบเคลื่อนไหว
Tjebo

คำตอบ:


7

คุณไม่ได้เตรียม reprex ดังนั้นฉันจำเป็นต้องทำบางสิ่งบางอย่างขึ้นมา ฉันอาจจะทำเช่นนี้

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()

สร้างเมื่อ 2019-11-03 โดยแพ็คเกจ reprex (v0.3.0)


ขอบคุณมันใช้งานได้ดีมาก! ฉันต้องการถามว่าเป็นไปได้หรือไม่ที่จะแสดงภาพสองภาพบนแถบเดียวกันที่นี่ (ฉันสมมติโดยยุ่งกับค่า hjust) โดยมีบางสิ่งเช่นนี้: ggplot (ข้อมูล, aes (สัตว์, นับ, เติม = สัตว์) ภาพ = ภาพ & x))
Pedro Guizar

โปรดโพสต์คำถามระดับบนสุดแยกต่างหากสำหรับเรื่องนี้
ซานตาคลอส Wilke

เพิ่งทำ @Claus Wilke stackoverflow.com/questions/58793147/…
Pedro Guizar

มันมีประโยชน์มาก มีแผนจะรับ ggtextures บน CRAN หรือไม่?
สตีฟ

ไม่ได้ตอนนี้มี ggpattern ซึ่งมีประสิทธิภาพมากกว่า github.com/coolbutuseless/ggpattern
Claus Wilke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.