Cách chèn ảnh vào từng thanh riêng lẻ trong biểu đồ ggplot


9

Tôi đang cố gắng so sánh các tân binh NBA khác nhau qua các số liệu thống kê khác nhau và tôi nghĩ rằng biểu đồ sẽ trông tuyệt vời nếu tôi có thể thêm khuôn mặt của người chơi vào cuối biểu đồ như trong các biểu đồ r / dữ liệu đẹp mắt . Mã của tôi hiện tại là:

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

Đây là biểu đồ của tôi hiện tại trông như thế nàogiống


2
Bạn đã xem bài đăng trên blog này, có vẻ khá liên quan: jcarroll.com.au/2019/08/13/ggtext-for-images-as-x-axis-labels
Ben

2
Các ggtextgói dường như cho phép này: github.com/clauswilke/ggtext#markdown-in-theme-elements
Jon Xuân

Điều này có trả lời câu hỏi của bạn không? Bao gồm hình ảnh trên nhãn trục trong
ggplot2

Câu trả lời:


7

Bạn đã không cung cấp một reprex, vì vậy tôi cần phải làm một cái gì đó. Tôi có thể sẽ làm điều đó như thế này.

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

Được tạo vào ngày 2019-11-03 bởi gói reprex (v0.3.0)


Cảm ơn, điều này đã làm việc tuyệt vời! Tôi muốn hỏi liệu có thể hiển thị hai hình ảnh trên cùng một thanh ở đây không (tôi giả sử bằng cách làm rối giá trị hjust) bằng cách có một cái gì đó như thế này: ggplot (dữ liệu, aes (động vật, đếm, điền = động vật, hình ảnh = hình ảnh & x))
Pedro Guizar

Xin vui lòng gửi một câu hỏi cấp cao nhất cho việc này.
Claus Wilke


Điều này rất hữu ích. Có kế hoạch nào để có được ggtextures trên CRAN không?
stevec

Không. Hiện tại có ggpotype mạnh hơn nhiều. github.com/coolbutusless/ggpotype
Claus Wilke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.