如何使用django-chartit更改系列名称?

时间:2015-11-06 13:57:18

标签: python django

我对使用django-chartit更改系列名称感到很疯狂。我有谷歌的解决方案,但我找不到它。

这是我的views.py。我甚至不知道应该在哪个地方添加系列的名称属性。所以我猜这可能应放在series_option中。但正如你所猜测的那样,一切都没有改变。该系列的名称仍然是“点击时间”

def userdata_chart_view(request):

    userdata = \
        DataPool(
            series=
            [{'options': {
                'source': User_Data.objects.filter(user=request.user.username)},
                'terms': [
                    'user',
                    'word',
                    'click_times']}
            ])

    cht = Chart(
        datasource= userdata,
        series_options =
            [{'options':{
                'type': 'column',
                'stacking': False},
            'terms':{
                'word': ['click_times']
                    },
            'name': '搜索次数',
            }],
        chart_options=
        {
         'title': {'text': '搜索频率'},
         'xAxis': {'title': {'text': '词条'}},
         'yAxis': {'title': {'text': '频率'}},

         }
    )

    content1 = {'user_data_chart': cht}
    return render(request, 'yigu/charts.html', content1)

2 个答案:

答案 0 :(得分:0)

我遇到了完全相同的难度,找到了一种与您分享的方式:根据图表演示中的this example,您可以在DataPool创建过程中简单地重命名字段。我使用了示例中的语法(虽然基于PivotDataPool,但对任何DataPool看起来都没问题......)通过将'terms'值从列表更改为dictionnary。在此词典中,键是图表对象中使用的自定义名称,值是原始字段名称。

对于您的示例,它可能如下所示:

userdata = \
    DataPool(
        series=
        [{'options': {
            'source': User_Data.objects.filter(user=request.user.username)},
            'terms': {
                'user': 'user',
                'word': 'word',
                '<your customized name>': 'click_times'}}
        ])

cht = Chart(
    datasource= userdata,
    series_options =
        [{'options':{
            'type': 'column',
            'stacking': False},
        'terms':{
            'word': ['<your customized name>']
                },
        ...

我希望这对你有用,我很高兴知道是否有更传统的方法可以做到这一点......

答案 1 :(得分:0)

PolRaguénès的回答指出了我正确的方向。只是在DataPool定义中包含了必须修复的术语:

userdata = \
    DataPool(
        series=
        [{'options': {
            'source': User_Data.objects.filter(user=request.user.username)},
            'terms': [
                'user': 'user',
                'word': 'word',
                {'<your customized name>': 'click_times'}]}
        ])