如何摆脱 ggplotly 中的这些图例数字?

How do I get rid of these legend numbers in ggplotly?

问题

我在 ggplotly 使用情节图例生成随机数时遇到问题。详情如下。

图书馆

我只使用两个库来演示这个问题:

# Libraries:
library(plotly)
library(ggpubr)

模拟数据

为了消除一些复杂数据的随机问题,我创建了以下数据框:

# Simulated data:
slack_frame <- data.frame(x = rnorm(100, 5, 2),
                          y = rnorm(100, 10, 4),
                          z = rep(x=c("Boy", "Girl"), 100))

基本情节:

现在,如果我只是制作一个普通的散点图,它基本上可以满足我的需求:我制作的基本 ggpubr 图的交互式版本:

# Scatter (Basic):
slack_scatter <- ggscatter(slack_frame,
          x="x",
          y="y",
          color = "z",
          title = "Simulated Scatterplot")
ggplotly(slack_scatter)

看到这里:

添加调色板:

但是,如果我添加调色板,我总是运行成问题。这是所用调色板的代码,“jco”:

# Scatter:
slack_scatter_jco <- ggscatter(slack_frame,
                           x="x",
                           y="y",
                           color = "z",
                           palette = "jco",
                           title = "Simulated Scatterplot")

# Plotly scatter:
ggplotly(slack_scatter_jco)

它现在给了我一个 图例,右边有这些恼人的数字:

我从来没有 运行 遇到与 ggplotly 一起使用的常规 ggplot 的相同问题:

# GGPLOT2 scatter:
base_gg <- ggplot(slack_frame,
                  aes(x=x,
                      y=y,
                      color=z))+
  geom_point()+
  labs(title = "Simulated Scatterplot")+
  scale_color_grey()
ggplotly(base_gg)

为什么这些数字不断出现,我该如何摆脱它们?

它似乎是 palette 参数(和 ggpubr::set_palette("jco"))和 ggplotly 之间交集的错误。解决办法是直接走:

slack_scatter_jco <- ggpubr::ggscatter(slack_frame,
                               x="x",
                               y="y",
                               color = "z",
                               title = "Simulated Scatterplot") +
                     ggpubr:::.ggcolor("jco")

# Plotly scatter:
plotly::ggplotly(slack_scatter_jco)