1

我的表中有 20 百万行。我正在尝试使用http://www.jqplot.com/tests/date-axes.php(日期与时间)绘制时间戳图 jquery 如何处理这么多要绘制的数据它。两个问题:

1.如何从下面的代码构造一个数组:

line1=[['2008-09-30',4], ['2008-10-30',6], ['2008-11-30',5], ['2008-12-30',9], ['2009-01-30',8]];`

2.在这种情况下我该如何即兴创作代码:

def get_data(request):
 cdr = Cdr.objects.values_list('start_of_call',flat=True)
 context_instance=RequestContext(request, {})) 
 return render_to_response('cdr/get_data.html', context_instance=RequestContext(request, {'cdr':cdr}))

模板:

<script class="code" type="text/javascript">
$(document).ready(function(){

{% for c in cdr %}
  {{ c|date:"d M Y"}}
{% endfor %}
 How to construct the below array line from for loop or using jquery methods
//var line1=[['2008-09-30',4], ['2008-10-30',6], ['2008-11-30',5], ['2008-12-30',9], ['2009-01-30',8]];

var plot1 = $.jqplot('chart1', [line1], {
title:'Default Date Axis',
axes:{xaxis:{renderer:$.jqplot.DateAxisRenderer}},
series:[{lineWidth:4, markerOptions:{style:'square'}}]
});
});
 </script>

EDIT

  line1=[['2008-09-30',4], ['2008-10-30',6], ['2008-11-30',5], ['2008-12-30',9], ['2009-01-30',8]];`

在上面的行 4,6,5,9,8 是小时

EDIT2

CDR 值:

    [datetime.datetime(2012, 9, 13, 15, 54, 52, tzinfo=<UTC>), datetime.datetime(2012, 9, 22, 18, 24, 18, tzinfo=<UTC>), datetime.datetime(2012, 9, 6, 7, 42, 50, tzinfo=<UTC>), datetime.datetime(2012, 9, 7, 21, 27, 13, tzinfo=<UTC>), datetime.datetime(2012, 9, 3, 11, 57, 9, tzinfo=<UTC>), datetime.datetime(2012, 9, 1, 17, 23, 41, tzinfo=<UTC>), datetime.datetime(2012, 9, 15, 6, 14, 33, tzinfo=<UTC>), datetime.datetime(2012, 9, 4, 5, 36, 30, tzinfo=<UTC>), datetime.datetime(2012, 9, 17, 10, 45, 6, tzinfo=<UTC>), datetime.datetime(2012, 10, 1, 3, 1, 17, tzinfo=<UTC>), datetime.datetime(2012, 9, 27, 8, 36, 41, tzinfo=<UTC>), datetime.datetime(2012, 9, 30, 3, 12, 18, tzinfo=<UTC>), datetime.datetime(2012, 9, 18, 4, 8, 49, tzinfo=<UTC>), datetime.datetime(2012, 9, 2, 7, 21, tzinfo=<UTC>), datetime.datetime(2012, 9, 19, 16, 57, 34, tzinfo=<UTC>), datetime.datetime(2012, 9, 17, 17, 14, 49, tzinfo=<UTC>), datetime.datetime(2012, 9, 1, 22, 40, 33, tzinfo=<UTC>), datetime.datetime(2012, 9, 15, 1, 7, 39, tzinfo=<UTC>), datetime.datetime(2012, 9, 22, 17, 11, 45, tzinfo=<UTC>), datetime.datetime(2012, 9, 10, 3, 16, 21, tzinfo=<UTC>), '...(remaining elements truncated)...']
4

1 回答 1

3

像这样的东西:

from django.utils import simplejson

def get_data(request):
    cdr = [(x.strftime('%Y-%M-%D'), x.hour) for x in \
            Cdr.objects.values_list('start_of_call',flat=True)]
    return render_to_response('cdr/get_data.html',
                              {'cdr': simplejson.dumps(cdr)},
                              context_instance=RequestContext(request))

格式字符串strftime可能有点偏离 - 在此处查看:http: //docs.python.org/2.7/library/datetime.html#strftime-strptime-behavior

顺便说一句,您的视图使用 RequestContext 做了一些奇怪的事情 - 以上是更常见的风格。

模板:

line1 = jQuery.parseJSON({{ cdr }})

至于样本量的问题——没有明确的答案——这将取决于你的网络连接、浏览器和机器。siad 20M 非常大 - 考虑对数据集进行采样以将其降低到更易于管理的大小 - 实验将是最好的方法。

于 2012-11-27T12:12:27.207 回答