I am working with the htmlwidget
dygraphs for R. My series spans a range from about 0 to 150,000.
I have tried using dyOptions(labelsKMB = "K")
-- this formats y-axis as 0K, 20K, 40K, ...
- however, as a result, the legend is also formatted with rounded values - e.g. 22K, 42K, etc.
.
I'd like to know if the following are possible and how to accomplish them:
10000
on the y-axis, it is formatted as 10,000
-- likewise, actual values in the legend such as 2523
are formatted as 2,523
.I am pushing this into an interactive RMarkdown document. Perhaps custom CSS is a way to do this?
You can specify a specific javascript function to set the labels of x axis independently. As an example, here is how you can modify the y-axis of the dygraph demo:
library(dygraphs)
library(htmlwidgets)
nhtempBig<-nhtemp*500
nhtempBig
valueFormatter<-"function formatValue(v) {
var suffixes = ['', 'K', 'M', 'G', 'T'];
if (v < 1000) return v;
var magnitude = Math.ceil(String(Math.floor(v)).length / 3-1);
if (magnitude > suffixes.length - 1)
magnitude = suffixes.length - 1;
return String(Math.round(v / Math.pow(10, magnitude * 3), 2)) +suffixes[magnitude]}"
dygraph(nhtempBig, main = "New Haven Temperatures") %>%
dyAxis("y", label = "Temp (F)", valueRange = c(0, 150000),axisLabelFormatter=JS(valueFormatter)) %>%
dyOptions(axisLineWidth = 1.5, fillGraph = TRUE, drawGrid = FALSE)
I just made up a dummy function to change the axis labels, the legend should stay the same.
Edit: added a formatting function, modified from one of the dygraph
example