Я хочу отобразить во всплывающей подсказке% изменения значений y. Однако я не хочу менять ось Y на проценты, как в https://www.highcharts.com/stock/demo/compare.
@magdalena, можно поконкретнее? Я безуспешно пытался в течение последних нескольких дней
Похоже, вы новичок в SO; Добро пожаловать в сообщество! Если вы хотите быстро получить отличные ответы, лучше сделать ваш вопрос воспроизводимым. Сюда входят образцы данных, такие как вывод из dput()
или reprex::reprex()
, а также любые библиотеки, которые вы используете. Проверьте это: создание воспроизводимых вопросов R. Когда вы задаете вопрос без кода, довольно сложно дать вам подробный ответ (например, как форматировать всплывающие подсказки). Это форматирование зависит от элементов вашего кода и ваших данных и структуры данных. Если вы не можете поделиться своими данными, используйте фиктивные данные.
@Kat, ты видишь мой новый вопрос: «Как изменить формат оси Y, если есть опция процентного изменения?» ? Это не воспроизводимо
Кажется, нет варианта, когда вы включаете сравнительные значения, но отображаете встроенную стоимость акций.
Я построил 2 акции на этом графике. Для каждой акции есть две серии, одна не для сравнения, а другая для сравнения. Две серии связаны. Серия сравнения установлена на visible = F
.
Значение для сравнения собирается из невидимого связанного ряда в настраиваемой подсказке и добавляется к не сравниваемому ряду.
library(highcharter)
library(quantmod)
# get data
goo <- getSymbols("GOOG", auto.assign = F)
app <- getSymbols("AAPL", auto.assign = F)
goog <- goo$GOOG.Open
appl <- app$AAPL.Open
highchart() %>%
hc_chart(zoomType = "x", marginTop = 20) %>%
hc_rangeSelector(enabled = T) %>%
hc_navigator(enabled = F) %>%
hc_scrollbar(enabled = F) %>%
hc_tooltip(
formatter = htmlwidgets::JS(
"function() {
/* collect name, x (and format it), y, color, compare value, & % diff */
nm = this.series.name;
xform = Highcharts.dateFormat('%B %e, %Y', this.x); /* collect/format date */
compVal = this.series.linkedSeries[0].dataModify.compareValue; /* 1st val in view */
col = this.color; y = this.y; /* set color and y to vars */
delta = (y - compVal)/compVal * 100; /* compute the comparison value as HC does */
tooltip = `<span>${xform}<br><hr><b><span style='color:${col};'>`; /* create tooltip */
tooltip += `● ${nm}:</span></b> ${y.toFixed(2)} (${delta.toFixed(2)}%)</span>`;
return tooltip; /* send back new tooltip */
}")) %>%
hc_add_series(goog, name = "Google", id = 'g', compare = F) %>%
hc_add_series(appl, name = "Apple", id = 'a', compare = F) %>%
hc_add_series(goog, visible = F, linkedTo = 'g', compare = "percent") %>%
hc_add_series(appl, visible = F, linkedTo = 'a', compare = "percent") %>%
hc_xAxis(type = "datetime") %>% # since it's a line, not stock, format x-axis
hc_yAxis(opposite = F, tickAmount = 5) # add values to y
Ваш вопрос нельзя воспроизвести, но если вам нужен перевод JS на R специально для Highcharter, я могу это сделать.
Атрибут compare = "percent"
создаст для вас дельта-значения.
library(highcharter)
library(quantmod)
goo <- getSymbols("GOOG", auto.assign = F) # get Google stock data
app <- getSymbols("AAPL", auto.assign = F) # get Apple stock data
goo <- goo$GOOG.Adjusted # only plotting one feature
app <- app$AAPL.Adjusted
highchart(type = "stock") %>%
hc_add_series(goo, name = "Google",
compare = "percent") %>% # compare the stock data creates % data
hc_add_series(app, name = "Apple",
compare = "percent") %>%
hc_rangeSelector(selected = 4) %>%
hc_tooltip(pointFormat = '<span style = "color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>',
valueDecimals = 2,
split = T)
Спасибо, но это не совсем решает мою проблему. Вы видите мой вопрос: «Как изменить формат оси y, если есть возможность процентного изменения?» . Я думаю, вы лучше поймете мою проблему, и она воспроизводима. спасибо за помощь
Проблема в том, что когда вы используете атрибут «сравнить», ось Y меняется на значения в %. Я хочу остаться со значениями y
Я обновил свой ответ. Дайте мне знать, если у вас есть вопросы или возникнут какие-либо проблемы.
Вы можете сделать все расчеты в
tooltip.formatter
, проверьте API: api.highcharts.com/highcharts/tooltip.formatter