как показать имя переменной во всплывающей подсказке, когда столбцы упорядочены по значению в ggplotly - PullRequest
1 голос
/ 29 апреля 2020

У меня есть ggplot, столбцы которого упорядочены по значению и отрисованы plotly :: ggplotly, чтобы сделать его интерактивным. Однако на графике при наведении курсора на столбцы имя переменной отображается как reorder(category, n).

Итак, всплывающие подсказки показывают:

    reorder(category, n): xxx
    n: xxx
    subCategory: xxx

Что мне нужно для всплывающей подсказки:

category: xxx
subCategory: xxx
n: xxx

Кто-нибудь знает, как я могу это исправить? Понятия не имею, что с этим делать .....

Ниже приведен мой код для сюжета:

library(dplyr)
library(ggplot2)
library(plotly)

df = data.frame(category=c('A','A', 'B', 'B','C','C', 'D','D'),
                subCategory = c('Y', 'N', 'Y', 'N', 'Y', 'N','Y', 'N'),
                n=c(120, 22, 45, 230, 11, 22, 100, 220))
df %>% 
  ggplot(aes(x=category, y=n, fill=subCategory))+
  geom_bar(stat='identity')

g=df %>% 
  ggplot(aes(x=reorder(category, n), y=n, fill=subCategory))+
  geom_bar(stat='identity')

ggplotly(g)

1 Ответ

1 голос
/ 29 апреля 2020

Одним из возможных решений будет не использовать reorder в ggplot, а вместо этого переупорядочить ось x перед передачей в ggplot, например:

g=df %>% arrange(n) %>% 
  mutate(category = factor(category, unique(category))) %>%
  ggplot(aes(x=category, y=n, fill=subCategory))+
  geom_bar(stat='identity')+
  labs(x = "Category")

ggplotly(g)

Другой вариант - установить аргументы в ggplot для использования в tooltip аргументе ggplotly, такие как:

g=df %>% 
  ggplot(aes(x=reorder(category, n), y=n, fill=subCategory, 
             text = paste("category:", category), text2 = n, text3 = subCategory))+
  geom_bar(stat='identity')+
  labs(x = "Category")

ggplotly(g, tooltip = c("text","text2","text3"))

Отвечает ли он на ваш вопрос?

...