定义 Plotly 标签时多边形消失 - R

Polygon disappears when Plotly labels are defined - R

我正在尝试使用 ggplotplotly 绘制多边形外壳。

虽然图中未显示 label 多边形,但当我在美学中添加额外标签时,多边形消失了。

library(data.table)
library(ggplot2)
library(dplyr)
library(plotly)

df <- data.table(continent = c(rep("America",3), rep("Europe",4)),
                     state = c("USA", "Brasil", "Chile", "Italy", "Swiss", "Spain", "Greece"),
                     X = rnorm(7, 5, 1),
                     Y = rnorm(7, -13, 1)
    )
    
    df$X_sd = sd(df$X)
    df$Y_sd = sd(df$Y)
    
    
    hull2 <- df %>%
      group_by(continent) %>%
      slice(chull(X,Y))
    
    

p <- df %>%
  ggplot( aes(x=X,
              y=Y, 
              fill = continent,
              color = continent,
              label=state))+
  geom_polygon(data = hull2,
               lwd = 1,
               alpha = 0.1,
               linetype = "dashed")+
  geom_errorbarh(aes(xmin = X - X_sd,
                     xmax = X + X_sd),
                 size = 0.5,
                 alpha = 0.3) +
  geom_errorbar(aes(ymin = Y - Y_sd,
                    ymax = Y + Y_sd),
                size = 0.5,
                alpha = 0.3) +
  geom_point(shape=21,
             color="black",
             size=3)+
  theme_bw()+
  theme(legend.position = "none")

ggplotly(p)

真奇怪!如果你最 label = stateaes 最后 geom_ 你会得到标准警告,但它有效并且状态显示在工具提示中。

color = continent 的名称也出现了。我猜你对在你的工具提示中加入它不感兴趣,所以我在最后添加了你如何改变它。有一个两次列出大陆的工具提示,但通过有关如何删除颜色的信息,您将看到如何根据跟踪进行进一步调整。

p <- df %>%
  ggplot(aes(x = X, y = Y, 
             fill = continent,
             color = continent #,
             # label = state)
         )) +
  geom_polygon(data = hull2, lwd = 1,
               alpha = 0.1, linetype = "dashed") +
  geom_errorbarh(aes(xmin = X - X_sd,
                     xmax = X + X_sd),
                 size = 0.5, alpha = 0.3) +
  geom_errorbar(aes(ymin = Y - Y_sd,
                    ymax = Y + Y_sd),
                size = 0.5, alpha = 0.3) +
  geom_point(shape = 21, 
             color = "black",
             size = 3, aes(label = state)) +
  theme_bw() + theme(legend.position = "none")
p

ggplotly(p)

要从工具提示中删除颜色,请将 ggplotly 分配给一个对象。然后你可以从第 7 和第 8 行中删除字符串。

p1 = ggplotly(p)

lapply(7:8,
       function(i){
         p1$x$data[[i]]$text <<- stringr::str_replace(p1$x$data[[i]]$text, 
                                                      "continent: black<br />", 
                                                      "")
       })
p1

仅供参考,您的情节由 8 条痕迹组成。第一个痕迹有双大陆文字。