我已经在上下搜索了一种基于 csv 或 xml 文件为地图部分着色的方法。例如说明选举结果。手工操作既繁琐
我想能够将路径附加到变量并能够根据数值更改背景图像或样本。
有没有人知道如何解决这个问题?
我已经在上下搜索了一种基于 csv 或 xml 文件为地图部分着色的方法。例如说明选举结果。手工操作既繁琐
我想能够将路径附加到变量并能够根据数值更改背景图像或样本。
有没有人知道如何解决这个问题?
这样做非常简单。所有你需要的是:
然后你所做的就是在每一列上循环,但如果你想规范化数据范围,你可能需要 2 个循环。这是我为大学学生准备的教程的最终结果:
#target illustrator
(function () { // protect namespace
var doc = app.activeDocument;
var input = read_data_CSV();
var data = input[0];
var max = input[1];
var min = input[2];
for ( i = 0; i < data.length; i++ ) {
var name = data[i][0];
var value = (data[i][1] - min)/(max-min)*100;
try{
var pathitem = doc.pageItems.getByName(name);
var col = new CMYKColor();
col.black = 0;
col.cyan = 100 - value;
col.magenta = value;
col.yellow = 0;
pathitem.fillColor = col;
if (pathitem.typename === "CompoundPathItem")
pathitem.pathItems[0].fillColor = col;
} catch(err) {
alert(name+ " errors!");
}
}
/**
* Prompt user for a CSV file, two columns
* name and value. The CSV file is assumed
* to be in form:
*
* name;10.5
*
* Where the column separator is ";" and
* the decimal separator is ".".
*
* @returns {array} containing the data, max
* and min.
*/
function read_data_CSV(){
var file = File.openDialog('data', 'center:*.csv');
file.open( 'r' );
var max = Number.MIN_VALUE;
var min = Number.MAX_VALUE;
var data = [];
while( !file.eof ) {
var input = file.readln().split( ';' );
var numeric = parseFloat(input[1]);
if (numeric > max) max = numeric;
if (numeric < min) min = numeric;
data.push([input[0], numeric]);
}
return [data, max, min];
}
})(); //run on load
图 1:使用 csv 文件中的值映射的示例地图
为了在一些真实的地图数据上进行测试,我准备了以下文件:
确保要修改的文件处于活动状态。这只是一个示例,我需要更加健壮才能将其作为其他内容共享。
从纯粹的努力水平的角度来看,考虑尝试 Tableau。我很确定您可以比编写脚本更快地拿起它。您还可以将图表/地图导出为 PDF,以便在 Illustrator 中进行微调。
甚至免费的公共版本也提供了一些非常强大的映射功能。只要您的数据集被命名为有意义的东西,它就可以很好地识别地理区域。
这是一个教程,让您了解什么是可能的: https ://www.interworks.com/blog/ccapitula/2015/02/25/tableau-essentials-formatting-tips-maps
注意:默认情况下,所有 Tableau Public 图表/地图都是公开的。另外,我没有创建该教程。
您可以结合一些电子表格数据使用自制的自定义脚本来执行此操作。要么你自己写,要么在这个线程中作为答案出现,或者你可以让Adobe Illustrator 脚本论坛上的人为你写一个。
创建自定义脚本时,您的基本目标是通过一些“键”(例如图层面板中的路径名称)或使用属性注释甚至使用变量功能并附加一个“键”将数据附加到艺术形状每条路径都有不同的变量。在电子表格中,您必须在一个列中包含此引用键,并在另一列中包含相应的颜色数据,例如样本名称或颜色值。您的自定义脚本将需要解析 CSV 数据并为路径着色。
如果您可以提供文件链接,或使用屏幕截图来解释电子表格和文档的结构,那么下一步就是这样做了。
我不熟悉 Illustrator 的脚本/变量功能,但我最近确实了解了在 Illustrator 中创建简单图表的能力。手动创建地图和着色值可能更简单。乏味?是的。但它会得到你想要的结果。
其他替代方案:建议的 Tableau,或使用 Excel 商店中的地图工具的 Excel 中的新功能将快速完成这项工作。
我刚开始使用 Cognos 10,我将在接下来的几周内处理地图,所以如果您有 Cognos Report Studio,您可以走这条路。