2015-06-29 22 views
8

Come creare mouseover text per i nomi delle colonne nella visualizzazione della tabella dei dati lucidi R. Sto provando a fornire del testo agli utenti per capire i nomi delle colonne. Ho controllato anche il pacchetto DT e non sono riuscito a trovare una soluzione. Posso creare etichette per i nomi di colonne e visualizzarle tutte quando un utente controlla una casella, questo richiede molto spazio e non lo voglio. Qualche consiglio?R testo lucido del mouseover per le colonne della tabella

+0

Ti riferisci a DataTable javascript in Shiny? – Shiva

+0

Tabella dati che visualizzo in 'Shiny' utilizzando' renderDataTable' – Sri

+0

possibilmente di interesse: http://stackoverflow.com/questions/16449252/tooltip-on-shiny-r – C8H10N4O2

risposta

9

di espandere il mio commento di cui sopra, ecco un esempio che mostra quello che volevo dire utilizzando le title attributi:

library(DT) 
sketch = htmltools::withTags(table(
    class = 'display', 
    thead(
    tr(
     th('', title = 'Row Names'), 
     th('Sepal.Length', title = 'The Sepal Length'), 
     th('Sepal.Width', title = 'The Sepal Width'), 
     th('Petal.Length', title = 'The Petal Length'), 
     th('Petal.Width', title = 'The Petal Width'), 
     th('Species', title = 'Iris Species') 
    ) 
) 
)) 
datatable(iris, container = sketch) 

E qui è un altro approccio con JavaScript (jQuery) per aggiungere gli attributi title:

library(DT) 
datatable(iris, callback = JS(" 
var tips = ['Row Names', 'The Sepal Length', 'The Sepal Width', 
      'The Petal Length', 'The Petal Width'], 
    header = table.columns().header(); 
for (var i = 0; i < tips.length; i++) { 
    $(header[i]).attr('title', tips[i]); 
} 
")) 
+0

Grazie per l'approccio alternativo – Sri

+3

Grazie a @Yihui. .. quale sarebbe l'approccio corrispondente per includere un mouseover a tutte le celle della tabella, e non l'intestazione? Ho già provato un sacco ma finora non ho gestito ... grazie – ChriiSchee

+0

La versione jquery non sembra funzionare per me - la mia tabella non si è caricata affatto quando ho cercato di includere questo frammento di codice, quindi sono passato all'approccio contenitore, che ha funzionato. Tuttavia stavo già usando 'tableHeader (table, escape = F)' per definire i nomi delle mie colonne. Come posso ancora sfuggire i nomi delle intestazioni? – Paul

2

È possibile eseguire tale operazione utilizzando options nella funzione renderDataTable() in Lucido. Dalla pagina documentation di DT in Shiny, qualcosa del genere dovrebbe funzionare.

renderDataTable(head(iris, 20), options = list(
    initComplete = JS(
    "function(settings, json) {", 
     "$(this.api().table().header()).on({ 
      mouseenter: function() { 
       //stuff to do on mouse enter 
      }, 
      mouseleave: function() { 
       //stuff to do on mouse leave 
      } 
     });", 
    "}") 
)) 
+0

Questo probabilmente funziona per un testo per l'intera riga di intestazione, ma sto cercando un valore separato per ogni nome di colonna.Qualcosa può essere fatto usando 'colnames' in' renderDataTable' e tag HTML? – Sri