Illustrator 数据驱动地图

平面设计 adobe-illustrator 数据可视化 xml
2022-02-20 18:12:58

我已经在上下搜索了一种基于 csv 或 xml 文件为地图部分着色的方法。例如说明选举结果。手工操作既繁琐

我想能够将路径附加到变量并能够根据数值更改背景图像或样本。

有没有人知道如何解决这个问题?

4个回答

这样做非常简单。所有你需要的是:

  • 带有名称和值的 CSV 格式的数据文件。
  • 要填充的每个区域形状都用名称进行注释。

然后你所做的就是在每一列上循环,但如果你想规范化数据范围,你可能需要 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 图表/地图都是公开的。另外,我没有创建该教程。

您可以结合一些电子表格数据使用自制的自定义脚本来执行此操作。要么你自己写,要么在这个线程中作为答案出现,或者你可以让Adob​​e Illustrator 脚本论坛上的人为你写一个。

创建自定义脚本时,您的基本目标是通过一些“键”(例如图层面板中的路径名称)或使用属性注释甚至使用变量功能并附加一个“键”将数据附加到艺术形状每条路径都有不同的变量。在电子表格中,您必须在一个列中包含此引用键,并在另一列中包含相应的颜色数据,例如样本名称或颜色值。您的自定义脚本将需要解析 CSV 数据并为路径着色。

如果您可以提供文件链接,或使用屏幕截图来解释电子表格和文档的结构,那么下一步就是这样做了。

我不熟悉 Illustrator 的脚本/变量功能,但我最近确实了解了在 Illustrator 中创建简单图表的能力。手动创建地图和着色值可能更简单。乏味?是的。但它会得到你想要的结果。

其他替代方案:建议的 Tableau,或使用 Excel 商店中的地图工具的 Excel 中的新功能将快速完成这项工作。

我刚开始使用 Cognos 10,我将在接下来的几周内处理地图,所以如果您有 Cognos Report Studio,您可以走这条路。