Javascript 如何确保Google Charts仪表板中的过滤饼图保持一致的切片颜色?

Javascript 如何确保Google Charts仪表板中的过滤饼图保持一致的切片颜色?,javascript,google-visualization,Javascript,Google Visualization,我有一个带有类别选择器的谷歌饼图,很像 此图表的目的是按媒体显示来自多个网站的流量来源(Google Analytics Profiles)。因此,数据源有三列:“GA配置文件”、“介质”和“访问” 我使用下拉类别过滤器根据“GA配置文件”进行过滤。换句话说,允许用户在查看不同GA配置文件的流量媒体之间切换。对于饼图本身,切片标签是“介质”,切片的大小基于“访问量”。因此,数据数组最终会显示以下内容: var data = google.visualization.arrayToDataTabl

我有一个带有类别选择器的谷歌饼图,很像

此图表的目的是按媒体显示来自多个网站的流量来源(Google Analytics Profiles)。因此,数据源有三列:“GA配置文件”、“介质”和“访问”

我使用下拉类别过滤器根据“GA配置文件”进行过滤。换句话说,允许用户在查看不同GA配置文件的流量媒体之间切换。对于饼图本身,切片标签是“介质”,切片的大小基于“访问量”。因此,数据数组最终会显示以下内容:

var data = google.visualization.arrayToDataTable([
['Brand', 'Medium', 'Visits'],
['SiteA', 'Banner', 819527],
['SiteA', 'Direct', 489598],
['SiteA', 'Organic Search', 249444],
['SiteA', 'Paid Search', 248824],
['SiteB', 'Banner', 24858],
['SiteB', 'Direct', 24744],
['SiteB', 'Organic Search', 23751],
['SiteB', 'Paid Search', 22751]
]);
(确实,如果没有选择“GA配置文件”,图表就没有意义,因为它分别列出了每个站点的每种媒体。但是,它并不意味着要以这种方式查看-我将类别过滤器默认设置为其中一个GA配置文件,它意味着其中一个配置文件始终处于活动状态。)


无论如何,这一切都很好,除了一件事:在GA配置文件之间切换时,介质的颜色不一致。例如,当我选择“站点A”时,“直接”可能为蓝色,“有机搜索”为红色,而“站点B”的“直接”可能为红色,而“有机搜索”为橙色。我希望每个介质的切片总是相同的颜色,不管我正在查看哪个GA配置文件的数据。关于我如何实现这一点有什么想法吗?我查看了文档,但没有找到任何指定切片颜色的方法;只有这样才能将配色方案设置为一个整体。在Google图表选项中有没有办法做到这一点,或者在初始绘制()后设置颜色?

API允许您指定为每个线段显示的颜色。使用此选项,您可以定义要使用的一组滚动颜色,如下所示:

var options = {
    colors: ['blue', 'red', 'orange', 'purple']
}
然后将这四种颜色应用于四个部分,当它到达第五个部分(在本例中,是下一个站点的开始)时,它将从您指定的颜色列表中再次开始

更新

如果您的数据集因站点而异,则需要为每个片段指定颜色。您可以创建一个循环,遍历每个值,并为每个段指定正确的颜色,这样您就可以得到一个颜色列表,如下所示:

colors: ['blue', 'red', 'orange', 'purple', 'blue', 'red', 'orange', 'purple', 'blue', 'red', 'orange', 'blue', 'purple'...]

当然,这可能会成为非常长的颜色集,但这是唯一的方法。

我尝试过,但使用自定义颜色并没有比使用默认颜色集更好。在这两种情况下,问题在于,无论它使用的是哪种颜色,它似乎都不允许您指定哪个切片应该是哪种颜色。我想,如果每个配置文件都有相同数量的介质,那就很容易了——然后我可以指定颜色的数量,这将达到预期的效果。然而,事实并非如此——有些更多,有些更少。更新答案,实现将是一系列循环和比较。