2017-03-19 2 views
2

Mit Joshua Kunt's Highcharter R package versuche ich einen benutzerdefinierten Tooltip und Formatnummern hinzuzufügen, so dass Tausende ein Kommatrennzeichen haben. Die Y-Achse und Tooltips Format korrekt, wenn ich den Tooltip nicht anpassen, wenn ich den folgenden Code:Komma-Format zu Highcharter Tooltips hinzufügen

snow <- read.csv("https://gist.githubusercontent.com/smach/d4188d200b465cba822405c323f1501c/raw/58c3785c34304ccc5dbcef632d3acb9d6dbad40c/BosChiNYCsnowfalls.csv", stringsAsFactors = FALSE) 
library("highcharter") 

hcoptslang <- getOption("highcharter.lang") 
hcoptslang$thousandsSep <- "," 
options(highcharter.lang = hcoptslang) 

highchart() %>% 
    hc_chart(type = "line") %>% 
    hc_title(text = "Snowfall") %>% 
    hc_xAxis(categories = snow$Winter) %>% 
    hc_add_series(data = snow$Boston * 10, name = "Boston") %>% 
    hc_yAxis(labels = list(format = "{value:,.0f}")) 

aber sobald ich nicht mehr eine Formatierer wie

hc_tooltip(formatter = JS("function() { return '<b>' + this.series.name + '</b><br /> ' + this.point.y + ' <br />' + this.x;}")) 

Der Tooltip Nummer hinzufügen hat das Komma. Ich denke, ich muss etwas im Formatierer an tun, aber die paar Dinge, die ich versucht habe, haben nicht funktioniert. Weiß jemand, was ich der Formatierungsfunktion hinzufügen muss, damit der Tooltip auch das Komma für den y-Wert anzeigt? Vielen Dank.

Antwort

1

Sie können versuchen, Ihre in der Highcharts.numberFormat-Funktion zu verpacken. Sie können darüber in der API Link lesen oder diese Quelle Beschreibung lesen:

/** 
* Format a number and return a string based on input settings. 
* 
* @function #numberFormat 
* @memberOf Highcharts 
* @param {Number} number - The input number to format. 
* @param {Number} decimals - The amount of decimals. A value of -1 preserves 
*  the amount in the input number. 
* @param {String} [decimalPoint] - The decimal point, defaults to the one given 
*  in the lang options. 
* @param {String} [thousandsSep] - The thousands separator, defaults to the one 
*  given in the lang options. 
* @returns {String} The formatted number. 
*/ 
H.numberFormat = function(number, decimals, decimalPoint, thousandsSep) { 
    // ... 
} 

In meinem Versuch, würde ich die beiden ersten Parameter enthalten, mit -1 Anzahl der Dezimalstellen zu bewahren. Das bedeutet, dass Sie mit diesem Formatierer gut sein sollten:

hc_tooltip(formatter = JS("function() { return '<b>' + this.series.name + '</b><br /> ' + Highcharts.numberFormat(this.point.y, -1) + ' <br />' + this.x;}")) 
+0

Das funktioniert, vielen Dank. – Sharon

Verwandte Themen