Javascript Google图表:如何在可视化中替换数据表元素,而不是在原始表中(DataView方法不起作用)?

Javascript Google图表:如何在可视化中替换数据表元素,而不是在原始表中(DataView方法不起作用)?,javascript,google-visualization,Javascript,Google Visualization,我正在尝试执行一个相当基本的程序。我有一个很长的数据表,有很大的单元格大小,可以与谷歌可视化一起使用。在创建页面之前,我想用代码和缩写替换大单元格,以减少文件大小和加载时间。我能应付。然而,当一个单元格或列的值/名称/标签显示在可视化本身中时,我希望看到该值的长格式版本(例如原始数据集中的“男性”->谷歌可视化数据表中的“M”->类别过滤器下拉列表中的“男性”>,工具提示等),这是一个意想不到的问题 我试图在下面修改过的谷歌游乐场示例中复制这个问题(以及我修复它的失败尝试)。在本例中,我已将初始

我正在尝试执行一个相当基本的程序。我有一个很长的数据表,有很大的单元格大小,可以与谷歌可视化一起使用。在创建页面之前,我想用代码和缩写替换大单元格,以减少文件大小和加载时间。我能应付。然而,当一个单元格或列的值/名称/标签显示在可视化本身中时,我希望看到该值的长格式版本(例如原始数据集中的“男性”->谷歌可视化数据表中的“M”->类别过滤器下拉列表中的“男性”>,工具提示等),这是一个意想不到的问题

我试图在下面修改过的谷歌游乐场示例中复制这个问题(以及我修复它的失败尝试)。在本例中,我已将初始数据集更改为在“性别”列中显示“M”和“F”,并且我仍然希望可视化在下拉列表和显示的表中显示“男性”和“女性”,就像在原始可视化中一样

我尝试修复的标签是尝试修复下面的性别;基本上,我正在尝试创建原始表的DataView,并用计算列替换性别列,将'm'和'F'转换为'Male'和'Female'。但我不确定这是否是一种明智的方法,即使我可以让它工作(我不能)。此狭条排印的要点是避免用长值替换原始表中的每个短值;我只想在可视化中显示表值时替换它们。但我在这里或其他地方找不到另一种方法,而且我对这种东西有点陌生,所以我认为如果没有一些指导,我不可能想出一种方法。至少,如果过去几个小时的故障是任何迹象的话,情况就不是这样了

如有任何意见或建议,将不胜感激。原始代码示例如下所示

编辑:下面的解决方案。总之:

1) 在dview.setColumns下,包括标签名称作为选项(例如,“label:‘Gender’”),以便控件和图表可以逐个标签引用计算出的列

2) 绘制视图,而不是表格(最后一行应该是:“绘制(dview)”

3) 将我的sexfix代码中重命名的变量从常规格式“var='X'”更改为“return:{v:'X'f:'Xxxxxx'}”;及


4) 添加行“addFormattedValue:true”或使用ControlWrappers和ChartWrappers中的“view:”选项来显示格式化值。

我怀疑您的代码中有两个问题。首先,当您将“性别”列添加到数据视图时,您省略了列标签,这是必需的,因为您的性别过滤器设置了
filterColumnLabel
选项,而不是
filtercolumnlindex
。在中添加标签以修复:

{calc: sexfix, type:'string', label: 'Gender'}
第二个问题是,您正在使用DataTable而不是DataView绘制仪表板:

new google.visualization.Dashboard(document.getElementById('dashboard')).
// Establish bindings, declaring the both the slider and the category
// picker will drive both charts.
bind([slider, categoryPicker], [pie, table]).
// Draw the entire dashboard.
draw(dview);

很好,第一点是我需要的(我应该在发布之前更改绘图参考,我知道;对不起,但感谢您指出)。对于具有相同或类似问题的其他人:如果您希望下拉列表中的名称是长名称而不是短名称,则需要进行更多的更改。首先,将我的sexfix代码中的变量重命名从常规格式“var='X'”更改为“return:{v:'X'f:'Xxxxxx'}”,然后添加行“addFormattedValue:true”,或者使用ControlWrappers和ChartWrappers中的“view:”选项来显示格式化值。
new google.visualization.Dashboard(document.getElementById('dashboard')).
// Establish bindings, declaring the both the slider and the category
// picker will drive both charts.
bind([slider, categoryPicker], [pie, table]).
// Draw the entire dashboard.
draw(dview);