gpt4 book ai didi

javascript - 一个页面中的多个可视化

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:54 24 4
gpt4 key购买 nike

我正在使用 python 可视化库来计算数据源。我试图在一个页面中放置多个可视化。两者都是折线图,数据来自每个可视化的单独 URL。

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="/site_media/js/jquery-1.2.6.min.js"></script>

<script type="text/javascript">
google.load('visualization', '1', { packages: ['linechart'] });

</script>
<script type="text/javascript">
var visualization1, visualization2;
function drawVisualization1() {
var query1 = new google.visualization.Query('/datasource1/');
query1.send(handleQueryResponse1);
var query2 = new google.visualization.Query('/datasource2/');
query2.send(handleQueryResponse2);

}
function handleQueryResponse1(response) {
if (response.isError()) {
alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
return;
}
var data1 = response.getDataTable();
visualization1 = new google.visualization.LineChart(document.getElementById('visualization1'));
var options = {};

options['width'] = 600;
options['height'] = 200;


visualization1.draw(data1, options);
}
function handleQueryResponse2(response) {
if (response.isError()) {
alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
return;
}
var data2 = response.getDataTable();
visualization2 = new google.visualization.LineChart(document.getElementById('visualization2'));
var options = {};


options['width'] = 600;
options['height'] = 200;


visualization2.draw(data2, options);
}
google.setOnLoadCallback(drawVisualization1);

</script>



<body>
<div id="visualization1" class="span-15"><br /><br /></div>
<div id="visualization2" class="span-15"><br /><br /></div>

</body>

数据源:

def datasource1(request):
data = []
description = {"col1": ("number", "col1"),"col2": ("number", "col2"),}
for i in range(datetime.today().hour + 1):
data.append({"col1":datetime.today().hour,"col2":datetime.today().hour })
data_table = gviz_api.DataTable(description)
data_table.LoadData(data)
return HttpResponse(data_table.ToJSonResponse(columns_order=( "col1","col2",)))



def datasource2(request):
data = []
description = {"col1": ("number", "col1"),"col2": ("number", "col2"),}
for i in range(datetime.today().hour + 1):
data.append({"col1":datetime.today().hour,"col2":datetime.today().hour })
data_table = gviz_api.DataTable(description)
data_table.LoadData(data)
return HttpResponse(data_table.ToJSonResponse(columns_order=( "col1","col2",)))

当我渲染页面时,只有第一个可视化出现,第二个可视化永远不会出现。有人可以帮助我吗?

最佳答案

你可以尝试类似的东西

function Charts(){
var self = this;
self.chart = [];
self.settings = { width: 650, height: 250 };
self.add = function(type, element, dataTable, options){
self.chart.push({
o: new google.visualization[type]($(element)[0]),
data: dataTable,
draw: function(){
var settings = $.extend({}, self.settings, options);
this.o.draw(this.data, settings);
}
});
return self;
};
self.draw = function(){
$.each(self.chart, function(i, chart){
chart.draw();
});
return self;
};
}

然后

//var data1 = 'someDataTable',
// data2 = 'anotherDataTable';

charts = new Charts();

var settings = {width:600, height:200 };

charts.add('LineChart', '#visualization1', settings, data1);
charts.add('LineChart', '#visualization2', settings, data2);

charts.draw();

抱歉,我自己还没有测试过,只是觉得它可以帮助你。

我建议也从 Google jQuery 加载。

google.load("jquery", "1.2.6");

希望对你有帮助:)

关于javascript - 一个页面中的多个可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1448638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com