2013-08-06 11 views
6

Chciałbym dodać kilka dodatkowych wartości do standardowej podpowiedzi Highcharts za pośrednictwem rCharts. Przykładowy kod:Dodaj wartości do rCharts hPlot tooltip

require(rCharts) 
df <- data.frame(x = c(1:5), y = c(5:1), 
      z = c("A", "B", "C", "D", "E"), 
      name = c("K", "L", "M", "N", "O")) 
h1 <- hPlot(x = "x", y = "y", data = df, type = "scatter", group = "z") 

Generuje to etykietkę narzędzi z wartościami x i y. I nazwa serii z jako tytuł. Teraz chcę również dodać wartości nazwy do etykiety narzędzi. Jednak nie mam pojęcia, jak to się robi.

Odpowiedz

1

Po kilku latach mam odpowiedź.

Wygląda na to, że te funkcje opakowania, takie jak hPlot(), nie obsługują dodatkowych zmiennych z etykietami narzędzi nawet w przypadku niestandardowej funkcji formatowania. Zobacz przykład działania poniżej na podstawie zestawu danych z pytania.

require(rCharts) 
# create data frame 
df <- data.frame(x = c(1:5), y = c(5:1), 
       z = c("A", "B", "C", "D", "E"), 
       name = c("K", "L", "M", "N", "O")) 

# Plot using hPlot() approach 
h1 <- hPlot(x = "x", y = "y", data = df, type = "scatter", group = "z") 
h1$tooltip(borderWidth=0, followPointer=TRUE, followTouchMove=TRUE, shared = FALSE, 
      formatter = "#! function(){return 'X: ' + this.point.x + '<br>Y: ' + this.point.y + '<br>Z: ' + this.point.z + '<br>Name: ' + this.point.name;} !#") 
h1 

hplot-rcharts

podpowiedzi nie działają w powyższym przykładzie, ponieważ zmienne w tablicy nie są nazwane. Zobacz str(h1).

# Plot using manual build 
h1 <- rCharts:::Highcharts$new() 
dlev <- levels(factor(as.character(df$z))) 
for(i in 1:length(dlev)) 
{ 
    h1$series(data = toJSONArray2(df[df$z==dlev[i],,drop=F], json = F,names=T), name = dlev[i],type = c("scatter"), marker = list(radius = 3)) 
} 
h1$tooltip(borderWidth=0, followPointer=TRUE, followTouchMove=TRUE, shared = FALSE, 
      formatter = "#! function(){return 'X: ' + this.point.x + '<br>Y: ' + this.point.y + '<br>Z: ' + this.point.z + '<br>Name: ' + this.point.name;} !#") 
h1 

manual-build-rcharts

To działa, ponieważ zmienne tablicy są nazwy names=T w linii startu h1$series.... Zobacz str(h1).

Ten rodzaj rozwiązania rozwiązuje problem z podpowiedziami, ale mogą występować inne problemy z nazwanymi tablicami. Na przykład łamie rzeczy w środowisku z błyszczącą aplikacją. Musi istnieć powód, dla którego hPlot() nie używa nazwanych tablic.

3

rCharts to świetny pakiet. Ale nadal nie jest dobrze udokumentowana (może tęsknię za tym punktem). Myślę, że musisz przedefiniować nową funkcję JS dla atrybutu tooltip. Wszelkie literały JS muszą być zawijane między #! i !# . Oto początek, ale nie działa tak, jak sobie wyobrażam (myślę, że to dobry początek):

h1$tooltip(formatter = "#! function() { return 'x: '  + this.point.x + 
               'y: ' + this.point.y + 
               'name: ' + this.point.group; } !#") 
+0

To naprawdę dobry początek. Właśnie znalazłem dokumentację formatowania podpowiedzi w witrynie highcharts. – jeroen81

+3

@ jeroen81 Czy masz na myśli, że gdzieś jest dokumentacja? Czy możesz dodać link do niego lub dodać odpowiedzi, jeśli uda ci się uzyskać lepsze wyniki? – agstudy

+0

@agstudy: Zajrzyj tutaj: http://api.highcharts.com/highcharts#plotOptions.column.tooltip – pfuhlert