如何格式化R中的dygraphs标签 - 逗号分隔数千个位置?

Jas*_*lns 7 r dygraphs r-markdown shiny

我正在使用htmlwidget Rdygraphs.我的系列范围从大约0到150,000.

我尝试过使用dyOptions(labelsKMB = "K")- 这会将y轴格式化为0K, 20K, 40K, ...- 但是,因此,图例也会使用舍入值进行格式化 - 例如22K, 42K, etc..

我想知道以下是否可行以及如何完成它们:

  1. 将y轴格式化为数千,但将图例保留为实际(非圆形)值?
  2. 在y轴和图例中的任意一个(或两个)上使用逗号分隔格式数千?也就是说,不是10000在y轴上显示,而是将其格式化为10,000- 同样地,图例中的实际值,例如2523格式化为2,523.

我正在将其推入交互式RMarkdown文档中.也许自定义CSS是一种方法吗?

Nic*_*icE 8

您可以指定特定的javascript函数来独立设置x轴的标签.例如,以下是如何修改dygraph演示的y轴:

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)
Run Code Online (Sandbox Code Playgroud)

我只是编写了一个虚拟函数来更改轴标签,图例应该保持不变.

编辑:添加了一个格式化功能,从其中一个示例中进行了修改dygraph


Jas*_*lns 5

用一个完整的例子扩展我上面的评论:

library(dygraphs)
library(htmlwidgets)
FUNC_JSFormatNumber <- "function(x) {return x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}"
dygraph(ldeaths) %>%
  dyAxis("y", axisLabelFormatter=JS(FUNC_JSFormatNumber), valueFormatter=JS(FUNC_JSFormatNumber))
Run Code Online (Sandbox Code Playgroud)