我使用Google Charts创建了一个漂亮的气泡图。这是图表的一个镜头:
x轴上的数字代表个别客户。沿y轴的数字代表各个产品。大家都知道,大约有23个客户和7个产品。
问题是X和Y轴只能是数字(据我所知,从文档中)。我希望能够为轴上的客户和产品显示字符串值,而不仅仅是代表性的整数。这样可以更容易理解我们正在查看的内容。
有谁知道如何实现这一目标?
我有JS数组,其中包含客户和产品字符串。它们的整数索引对应于图表上显示的数字。例如:
customers[6] = "Microsoft"
customers[7] = "Dell"
...
但是现在只有整数出现了。
任何帮助将不胜感激!谢谢!
以下是我用来定义图表的代码:
var options = {
'title':'Customer / Product Grid',
'width': 1000,
'height':500
};
//for customer product grid
var customer_product_grid_data_table = new google.visualization.DataTable();
customer_product_grid_data_table.addColumn('string', 'Customer and Product');
customer_product_grid_data_table.addColumn('number', 'Customer');
customer_product_grid_data_table.addColumn('number', 'Product');
customer_product_grid_data_table.addColumn('number', 'Profit Margin');
customer_product_grid_data_table.addColumn('number', 'Proportion of Sales');
for (var i = 1; i < customer_product_grid_data.length; i ++){
customer_product_grid_data_table.addRow([
'',
customer_product_grid_data[i][0],
customer_product_grid_data[i][1],
(customer_product_grid_data[i][3] - customer_product_grid_data[i][2]) / customer_product_grid_data[i][3] * 100,
customer_product_grid_data[i][3] / qnty_sell_total
]);
}
var chart = new google.visualization.BubbleChart(document.getElementById('customer_product_grid'));
chart.draw(customer_product_grid_data_table, options);
答案 0 :(得分:3)
从我所做的所有搜索以及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
的东西要么用数组中的元素替换整数,要么把它变成空白。
请注意,要使上述代码正常运行,您需要在图表选项中包含以下属性 - &gt; vAxis: { textPosition: 'in' }
答案 1 :(得分:1)
不幸的是,没有简单的方法来做泡泡图(或任何使用数值系列作为轴值)。您可以按照here所述解决它。
一般概念是消除“主图表”上的轴标签,并调整网格线以匹配所需的标签数量。然后创建一个额外的虚拟图表,仅显示类别,并使用它来显示标签。
不幸的是,在谷歌决定为图表轴实施整个ICU模式集之前,这是必须的......