0

有没有办法将 y 轴标签格式化为瑞士-德国风格(例如 -> 10000000 10'000'000)?试图将语言设置为瑞士,但它仍然没有按照应有的格式进行格式化

google.load("visualization", "1", { "packages": ["corechart"], 'language': 'de_CH' })

添加了我希望它是多么精确的示例,现在我破解了它,但想知道是否有更好的方法......

格式示例

4

2 回答 2

0

不,这是不可能的。

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' }

于 2013-04-17T03:51:49.710 回答
0

这是我的黑客

//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, '\''));
        }
    });
于 2013-04-30T09:57:47.380 回答