【问题标题】:image as axis tick ggplot图像作为轴刻度ggplot
【发布时间】:2019-06-12 08:36:36
【问题描述】:

我一直在寻找一种在 ggplot2 中使用 png 图像作为轴刻度的方法,更准确地说是在 ggridges 我已阅读并尝试复制这些帖子的答案,但从发布到发布日期,包的语法发生了很大变化:

Annotate ggplot with an extra tick and label How can I use a graphic imported with grImport as axis tick labels in ggplot2 (using grid functions)? Icons as x-axis labels in R - ggplot2

我想将 png(或其他类型)图像添加到刻度标签,而不是标签 virginica、setosa 和 versicolor;

library(ggridges)
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges()

【问题讨论】:

    标签: r ggplot2 ggridges


    【解决方案1】:

    cowplot 包让这变得更容易了。

    构建情节:

    library(ggridges)
    library(ggplot2)
    
    p <- ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges()
    

    加载图像并使用axis_canvas() 构建一条垂直图像:

    library(cowplot)
    
    pimage <- axis_canvas(p, axis = 'y') + 
      draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Iris_virginica.jpg/295px-Iris_virginica.jpg", y = 2.5, scale = 0.5) +
      draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Iris_versicolor_3.jpg/320px-Iris_versicolor_3.jpg", y = 1.5, scale = 0.5) +
      draw_image("https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Kosaciec_szczecinkowaty_Iris_setosa.jpg/450px-Kosaciec_szczecinkowaty_Iris_setosa.jpg", y = 0.5, scale = 0.5)
    
    
    # insert the image strip into the plot
    ggdraw(insert_yaxis_grob(p, pimage, position = "left"))
    

    没有axis.text.y:

    p <- ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges() +
      theme(axis.text.y = element_blank())
    ggdraw(insert_yaxis_grob(p, pimage, position = "left"))
    

    您也可以删除垂直线,目前我找不到将图像条放在轴线左侧的方法。

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      相关资源
      最近更新 更多