我正在使用htmlwidget
dygraphs for R。我的系列范围从0到150,000不等。
我尝试使用dyOptions(labelsKMB = "K")
- 这会将y轴格式化为0K, 20K, 40K, ...
- 但是,因此,图例也会使用舍入值进行格式化 - 例如22K, 42K, etc.
。
我想知道以下是否可行以及如何完成它们:
10000
,而是将其格式化为10,000
- 同样,图例中的实际值(例如2523
)格式为2,523
我正在将其推入交互式RMarkdown文档中。也许自定义CSS是一种方法吗?
答案 0 :(得分: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)
我刚刚编写了一个虚拟函数来更改轴标签,图例应该保持不变。
修改:添加了一个格式化功能,该功能是根据dygraph
example
答案 1 :(得分:2)
使用完整的示例扩展我的评论:
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))