Через несколько лет у меня есть ответ.
Похоже, что эти функции-оболочки, такие как hPlot()
, не поддерживают дополнительные переменные всплывающей подсказки даже с простой пользовательской функцией форматирования. См. рабочий пример ниже на основе набора данных из вопроса.
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](https://i.stack.imgur.com/tWyKd.png)
В приведенном выше примере всплывающие подсказки не работают, поскольку переменные в массиве не имеют имен. См. 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](https://i.stack.imgur.com/WtwtW.png)
Это работает, потому что переменные массива именуются с использованием names=T
в строке, начинающейся с h1$series...
. См. str(h1)
.
Это решает проблему с всплывающей подсказкой, но могут быть и другие проблемы с именованными массивами. Например, он ломает вещи в среде блестящего приложения. Должна быть причина, по которой hPlot()
не использует именованные массивы.
person
rmf
schedule
07.01.2016