我想将图像嵌入到 plotly 图表的 x 轴中(而不是代替 x 轴)。我尝试过的代码:
library(plotly)
library(dplyr)
library(tidyr)
Animals <- c("giraffes", "orangutans", "monkeys")
SF_Zoo <- c(20, 14, 23)
LA_Zoo <- c(12, 18, 29)
data <- data.frame(Animals, SF_Zoo, LA_Zoo) %>%
pivot_longer(cols = c(SF_Zoo, LA_Zoo)) %>%
mutate(Animals = paste(Animals, "<img src='https://images.plot.ly/language-icons/api-home/r-logo.png'</img>"))
plot_ly(data, x = ~Animals, y = ~value, type = 'bar', color = ~name) %>%
layout(
barmode = "stack"
)
可以看出,img
标签被打印为文字字符串。我尝试过包装刻度标签Animals
,htmltools::HTML
但没有成功。
本plotly 指南讨论了在绘图区域内嵌入图像/徽标,但我想将图像嵌入为刻度标签的一部分。此python SO 解决方案将刻度标签完全替换为图像。
不幸的是,与 Python 中的 Plotly 不同,R 不直接支持在刻度标签内嵌入图像。但是,我们可以使用背景图像和手动定位来实现此效果。
以下代码添加了您需要的图像,但您可能需要更改
images
对象的参数以将它们正确添加到图形中。就像在python 答案中一样,您可以将图像粘贴到布局中,并迭代数据的 x 值。为此,您可以使用
lapply
构建图像列表。按照此处xref = "x"
所述使用。我还将使用在绘图下方为图像创建一些空间,但您也可以使用将它们推送到背景层。然后您可以使用始终将图像居中。margin = list(b = 150)
layer="below"
xanchor = "center"
代码