R: ggplot для наведения текста - PullRequest
0 голосов
/ 24 августа 2018

Мои данные (final.df) выглядят следующим образом:

A B C Y 1     
0 0 0 0 0.05 
0 0 1 1 0.03 
....

На основе приведенного ниже комментария приведено текстовое представление ASCII-кадра данных.

structure(list(A = c(502, 541, 542, 543, 544, 545, 4304, 4370, 
4371, 4372, 4373, 4442), B = c(4.4, 4.2, 4.4, 4.6, 4.8, 5, 5.2, 
4.6, 4.8, 5, 5.2, 5.2), C = c(2.6, 2.8, 2.8, 2.8, 2.8, 2.8, 12.6, 
12.8, 12.8, 12.8, 12.8, 13), Y = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1), `1` = c(0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1), `NA` = c(0, 
0, 0, 0, 0, 0, 0, 0, 0.000281600479875937, 0, 0, 0)), .Names = c("A", 
"B", "C", "Y", "1", NA), row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 
7L, 8L, 9L, 10L, 11L, 12L), class = "data.frame")

КомуПодводя итог, есть четыре столбца, которые идентифицируют каждую точку данных.Я заинтересован в создании двух коробочных графиков в соответствии с их значениями в столбце с именем 1. Я хочу сравнить значения для точек, помеченных 0 в столбце «Y» и помеченных 1 в столбце «Y».Наконец, я хочу иметь возможность навести курсор на точки, чтобы получить метаданные, то есть значения «A», «B», «C» и «1».

p <- ggplot(final.df, aes(x = factor(Y), y = 
Y, fill = factor(Y))) 
p <- p + geom_boxplot() + geom_point() + xlab("Y") + guides(fill = 
guide_legend("Y")) + theme(legend.position="top") 
final.p <- ggplotly(p)  

ТекущийНа графике показано значение фактора (Y) и соответствующее значение в 1. Как включить метаданные в столбцы «A», «B», «C»?

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Используйте функцию tooltip ggplotly. Прочтите об этом, набрав help(ggplotly). Смотри ниже:

library(tidyverse)
library(plotly)

set.seed(55)
df <- data.frame(
  A = c(rep(0, 8), rep(1, 8)),
  B = rep(c(rep(0, 4), rep(1, 4)), 2),
  C = rep(c(rep(0, 2), rep(1, 2)), 4),
  Y = rep(c(0, 1), 8),
  X1 = runif(16)
)

p <- ggplot(df, aes(x = factor(Y), y = X1, fill = factor(Y), A = A, B = B, C = C))
p <- p + geom_boxplot() +
  geom_point() +
  xlab("Y") +
  guides(fill = guide_legend("Y")) +
  theme(legend.position = "top")
final.p <- ggplotly(p, tooltip = c("A", "B", "C"))
final.p
0 голосов
/ 24 августа 2018

Мы можем создать текст, используя paste0 и HTML-тег <br><\br> и указав toolttip, чтобы использовать текст.

p <- ggplot(df, aes(x = factor(Y), y = Y, 
                    fill = factor(Y), text=paste('</br>A: ',A,'</br>B: ',B, '</br>1: ',1)))

ggplotly(p,tooltip = c("text"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...