有没有办法将 y 轴标签格式化为瑞士-德国风格(例如 -> 10000000 10'000'000)?试图将语言设置为瑞士,但它仍然没有按照应有的格式进行格式化
google.load("visualization", "1", { "packages": ["corechart"], 'language': 'de_CH' })
添加了我希望它是多么精确的示例,现在我破解了它,但想知道是否有更好的方法......
有没有办法将 y 轴标签格式化为瑞士-德国风格(例如 -> 10000000 10'000'000)?试图将语言设置为瑞士,但它仍然没有按照应有的格式进行格式化
google.load("visualization", "1", { "packages": ["corechart"], 'language': 'de_CH' })
添加了我希望它是多么精确的示例,现在我破解了它,但想知道是否有更好的方法......
不,这是不可能的。
Google 使用ICU DecimalFormat集的一个子集,不幸的是,这不允许您对人员强制使用区域设置或更改分隔符。如果您现在将 a.
作为分隔符,那将是您获得的最接近的分隔符。
强制执行此类操作的唯一方法是编写自定义代码,循环遍历svg
图表创建的元素,使用自定义 JavaScript 函数将.
or,
替换为'
. 没有超级简单的方法可以做到这一点,但jeffrey_the_wind 的这篇文章显示了一种方法:
从我所做的所有搜索以及 jmac 给出的答案来看,我决定唯一的方法是使用 Javascript hack 用单词替换轴号。我实现的代码在这里:
/* * * The following 2 functions are a little hacky, they have to be done after calling the "draw" function * The bubble chart originally displays only numbers along the x and y axes instead of customer or product names * These 2 functions replace those numbers with the words for the customers and products * */ for ( var i = -2; i < products.length + 1; i ++ ){ $('#customer_product_grid svg text[text-anchor="start"]:contains("'+i+'")').text(function(j,t){ if (t == i){ if (i >= products.length || i < 0){ return " "; } return products[i]; } }); } for ( var i = -2; i <= customers.length + 3; i ++ ){ $('#customer_product_grid svg text[text-anchor="end"]:contains("'+i+'")').text(function(j,t){ if (i >= customers.length + 1 || i <= 0){ return " "; }else if (t == i){ return customers[i-1]; } }); }
基本上,您只需创建一个 for 循环,遍历您在 x 和 y 轴上显示的所有整数。做一些
if...else
事情,要么用数组中的元素替换整数,要么把它留空。请记住,要使上述代码正常工作,您需要在图表选项中具有以下属性 ->
vAxis: { textPosition: 'in' }
这是我的黑客
//Format diagram y-axis labels
var labelContainer = $($("#diagramPlaceholder").find("g")[1]).children("g:last-child").children("g");
//Foreach x,y1,y2 labels do
labelContainer.each(function() {
var textContainer = $(this).find("text");
//If labels contains valid number
if (!isNaN(textContainer.text().replace(/\./g, '').replace(',', '.'))) {
//Replace " . " chars with " ' " char
textContainer.text(textContainer.text().replace(/\b[.]\b/g, '\''));
}
});