我正在try 制作一个图表,其中的标题有 colored颜色 编码的文本,以消除对图例的需要.我可以使用ggtext
和ggtext::element_markdown()
在ggplot2
中做到这一点.
然而,当我试图在上面ggplotly
层时, colored颜色 消失了.
我想知道有没有什么方法可以把 colored颜色 功能和ggplotly
结合起来?
以下是使用mtcars
数据集的可重现示例.
library(ggplot2)
library(dplyr)
library(plotly)
library(ggtext)
mtcolors<-c("springgreen4", "darkorange3", "purple")
names(mtcolors)<-c("4 cyl", "6 cyl", "8 cyl")
mt_title_text <- glue::glue(
'MPG vs HP -',
'<span style = "color:{mtcolors["4 cyl"]}">**4 cyl**</span>',
'vs.',
'<span style = "color:{mtcolors["6 cyl"]}">**6 cyl**</span>',
'vs.',
'<span style = "color:{mtcolors["8 cyl"]}">**8 cyl**</span>',
.sep = ' '
)
mtcars |>
mutate(
cyl = as.factor(cyl)
) |>
ggplot(aes(x=mpg, y=hp, color=cyl)) +
geom_point(size=3) +
theme_bw() +
scale_color_manual(values=c("springgreen4", "darkorange3", "purple")) +
labs(
title = mt_title_text
) +
theme(
plot.title = ggtext::element_markdown(),
panel.grid.minor = element_blank(),
legend.position = 'none'
)
这将生成以下图表:
然而,当我添加ggploly以添加交互功能时,标题中的标记文本返回到普通文本:
mtcarsexp<-
mtcars |>
mutate(
cyl = as.factor(cyl)
) |>
ggplot(aes(x=mpg, y=hp, color=cyl)) +
geom_point(size=3) +
theme_bw() +
scale_color_manual(values=c("springgreen4", "darkorange3", "purple")) +
labs(
title = mt_title_text
) +
theme(
plot.title = ggtext::element_markdown(),
panel.grid.minor = element_blank(),
legend.position = 'none'
)
ggplotly(mtcarsexp)
似乎我可以在this question中使用这个概念,而不是在labs
中使用标题,只需创建文本,并将其放置在标题的位置,但我更喜欢使用原生的labs
功能.