使用GChartWrapper为Google Chart创建动态标签

时间:2012-10-24 18:51:10

标签: python django google-visualization google-chartwrapper

我正在使用令人敬畏的Google Chart Wrapper创建图表作为我的Django项目的一部分。现在我在视图中使用Python创建图表实例,然后将实例添加到模板上下文并成功在模板中显示图表。

我遇到的麻烦是显示一组动态X轴标签。以下是Google Chart Wrapper的相关代码:

def label(self, index, *args): 
    """ 
    Label each axes one at a time 
    args are of the form <label 1>,...,<label n> 
    APIPARAM: chxl 
    """ 
    self.data['labels'].append( 
    str('%s:|%s'%(index, '|'.join(map(str,args)) )).replace('None','') 
    ) 
    return self.parent 

以及我目前如何在视图中创建图表:

from GChartWrapper import *

chart = Sparkline([1,2,3,4,5,6,7], encoding='text')
chart.axes.label(...) # need to set labels here

我有一个日期字符串列表,我想将其显示为x轴标签,是否有人知道我会如何做到这一点?

1 个答案:

答案 0 :(得分:2)

为了了解如何正确传递标签,了解*args的含义非常重要。

函数(或本例中的方法)定义中的

*args(星号+任意参数名)定义任意数量(包括0)的匿名参数。

有关详细说明,请参阅此answer

这意味着有问题的方法接受一个强制性参数index,它是要标记的轴的索引和任意数量的匿名参数(实际标签)。

了解这一点,应该已经清楚,调用label()的正确方法如下:

chart.axes.label( 0, 'date 1', 'date 2', 'date 3', ... )

其中0是X轴的索引,所有其他参数都是相应的标签。

以这种方式实现这一点的原因是标签的数量是未知的 - 它取决于图表,因此接受任意数量的标签似乎是个好主意。

您可能还想查看示例here