Добавьте значения во всплывающую подсказку rCharts hPlot

Я хотел бы добавить некоторые дополнительные значения в стандартную всплывающую подсказку Highcharts через rCharts. Пример кода:

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")

Это генерирует всплывающую подсказку со значениями x и y. И название серии z в качестве заголовка. Теперь я также хочу добавить значения имени во всплывающую подсказку. Однако я понятия не имею, как это делается.


person jeroen81    schedule 06.08.2013    source источник


Ответы (2)


Через несколько лет у меня есть ответ.

Похоже, что эти функции-оболочки, такие как 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

В приведенном выше примере всплывающие подсказки не работают, поскольку переменные в массиве не имеют имен. См. 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

Это работает, потому что переменные массива именуются с использованием names=T в строке, начинающейся с h1$series.... См. str(h1).

Это решает проблему с всплывающей подсказкой, но могут быть и другие проблемы с именованными массивами. Например, он ломает вещи в среде блестящего приложения. Должна быть причина, по которой hPlot() не использует именованные массивы.

person rmf    schedule 07.01.2016

rCharts отличный пакет. Но это все еще не очень хорошо документировано (может быть, я пропустил этот момент). Я думаю, вам нужно переопределить новую функцию JS для атрибута tooltip. Любые литералы JS должны быть заключены между #! а также !# . Вот начало, но оно не работает, как я себе представляю (я думаю, это хорошее начало):

h1$tooltip( formatter = "#! function() { return 'x: '     + this.point.x + 
                                                'y: '    + this.point.y  + 
                                                'name: '  + this.point.group; } !#")
person agstudy    schedule 06.08.2013
comment
Действительно, это хорошее начало. Я только что нашел документацию по форматированию подсказок highcharts на их сайте. - person jeroen81; 06.08.2013
comment
@jeroen81 jeroen81 Вы имеете в виду, что где-то есть документация? Можете ли вы добавить ссылку на него, пожалуйста, или добавить свои ответы, если вам удастся получить лучшие результаты? - person agstudy; 07.08.2013
comment
@agstudy: Взгляните сюда: api.highcharts.com/highcharts#plotOptions.column. подсказка - person pfuhlert; 09.06.2015
comment
@pfuhlert хорошо... но не могли бы вы дать мне больше контекста, пожалуйста... Я долго отвечал на этот вопрос... - person agstudy; 09.06.2015
comment
Я просто попытался ответить на ваш вопрос. Там вы найдете все параметры, которые вы можете использовать для всплывающей подсказки. - person pfuhlert; 10.06.2015
comment
Так есть ли у кого-нибудь ответ на вопрос, как добавить name во всплывающую подсказку? Один источник указывает на использование многомерных массивов в качестве рядов. Но здесь x, y, z и т. д. передаются как одномерные векторы. - person rmf; 29.06.2015