简体   繁体   English

Google图表:过滤GeoChart

[英]Google chart : filter GeoChart

I'm trying to use a ControlWrapper to filter data to display on a GeoChart inside a dashboard. 我正在尝试使用ControlWrapper过滤数据以显示在仪表板内的GeoChart上。 The problem is the following : I have to have three columns : 'Country', 'value' and 'quarter'. 问题如下:我必须具有三列:“国家”,“值”和“季度”。 Now, I want to display information for one quarter only, which I can select thanks to a CategoryPicker. 现在,我只想显示四分之一的信息,这要归功于CategoryPicker。 Then, using the dashboard features, I want to bind my picker with my GeoChart. 然后,我要使用仪表板功能,将选择器与我的GeoChart绑定。 However, I cannot display my GeoChart as it throw an error because I use three columns where I should only have two... 但是,我无法显示我的GeoChart,因为它会引发错误,因为我使用了三列,而我应该只有两列...

I know the trick is to use a DataView and hide the third column but then I cannot link my filter and my geochart. 我知道诀窍是使用DataView并隐藏第三列,但随后无法链接过滤器和我的地理图表。

Is there a workaround here? 这里有解决方法吗? Part of my code can be found below. 我的部分代码可以在下面找到。 Btw, this works fine with other types of chart, but not with the GeoChart... why? 顺便说一句,这适用于其他类型的图表,但不适用于GeoChart ...为什么?

In advance, thanks a lot for your help ! 预先,非常感谢您的帮助!

var data = response.getDataTable();

        var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div'));

        var quarterSelector = new google.visualization.ControlWrapper({
                'controlType': 'CategoryFilter',
                'containerId': 'filter_div',
                'options': {
                    'filterColumnLabel': 'Quarter',
                     ui: {
                        allowTyping: false,
                        allowMultiple: false,
                        allowNone: false
                    },
                    'chartView': {
                        'columns': [0,1]
                    },
                }
        });

        var mapChart = new google.visualization.ChartWrapper({
            'chartType': 'GeoChart',
            'containerId': 'regions_div',
            'options': {
                'displayMode': 'regions',
                'region': '150',
                'view': {'columns':[0,1]}
            }
        });         

    dashboard.bind(quarterSelector, mapChart);      
    dashboard.draw(data);

first, chartView is part of ui on ChartRangeFilter -- not CategoryFilter 第一, chartView是部分uiChartRangeFilter -不CategoryFilter

in addition, view: {'columns':[0,1]} should not be part of options 此外, view: {'columns':[0,1]}不应该是options一部分
but on same level as options , chartType , and containerId 但与optionschartTypecontainerId处于同一级别

however, neither should be needed here... 但是,这里都不应该...

 google.charts.load('current', { packages: ['controls', 'geochart'], callback: drawChart }); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Country', 'Popularity', 'Quarter'], ['Germany', 200, 1], ['United States', 300, 2], ['Brazil', 400, 3], ['Canada', 500, 4], ['France', 600, 3], ['RU', 700, 2] ]); var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div')); var quarterSelector = new google.visualization.ControlWrapper({ controlType: 'CategoryFilter', containerId: 'filter_div', options: { filterColumnLabel: 'Quarter', ui: { allowTyping: false, allowMultiple: false, allowNone: false } } }); var mapChart = new google.visualization.ChartWrapper({ chartType: 'GeoChart', containerId: 'regions_div', options: { displayMode: 'regions' } }); dashboard.bind(quarterSelector, mapChart); dashboard.draw(data); } 
 <script src="https://www.gstatic.com/charts/loader.js"></script> <script src="https://www.google.com/jsapi"></script> <div id="dashboard_div"> <div id="filter_div"></div> <div id="regions_div"></div> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM