Карты Illustrator на основе данных

Я искал способ раскрасить части карты на основе файла csv или xml. Например, для иллюстрации результатов выборов. Делать это вручную утомительно

Я представляю, как можно прикрепить путь к переменной и изменить фоновое изображение или образец на основе числового значения.

У кого-нибудь есть идея о том, как подойти к этому?

сделать это не очень сложно, но немного неудобно близко к разработке. Дело в том, что цветная карта сильно отличается от круговой диаграммы, а та, в свою очередь, отличается от спиральной временной шкалы и т. д. Таким образом, мы можем легко ответить на конкретный случай, но не на все сразу. Делать это не более 20 минут работы.
"Работа не более 20 минут" - мои знаменитые последние слова :)
@ Глупый-V да, но в данном случае это правда. Я засекал это, я просто пытаюсь понять, как отделить свои собственные вещи, которыми мне неудобно делиться, от цикла.
Так он прислал вам материалы, и вы над этим работаете? Я бы не смог сам оценить время, пока не увижу, с чем можно работать. Мне любопытно, как эта карта сделана самой.
@Silly-V Я могу сделать скрипт независимым от файла. Не так уж сложно найти имя и составить пару.
Прости @silly-V. Я так и не удосужился отправить файлы для демонстрационных целей. Была насыщенная неделя. Файлы, о которых идет речь, можно загрузить здесь: drive.google.com/drive/folders/… У меня есть еще одна тема на форуме Illustrator: forums.adobe.com/thread/2226853.
@JakobThuemoes Извините за поздний ответ, но у меня действительно не было времени вернуться к этому до этого года.

Ответы (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-файла.

Чтобы проверить это на реальных картографических данных, я подготовил следующие файлы:

  • map.ai — карта, содержащая карту муниципалитетов Южной Финляндии. Карта основана на «NLS Yleiskarttarasteri 1:1 000 000, 1.4.2013». Вы можете делиться этими данными или смешивать их, если указываете источник и указываете версию, откуда они были взяты.
  • населения_31_12_2016_logarithmic.csv , содержащего данные о населении региона на 31 декабря 2016 года.
  • процент_of_unemployment_2015.csv , содержащий данные о безработице в 2015 году.

Убедитесь, что файл для изменения активен. Это пример, только мне нужно быть намного более надежным, чтобы поделиться им как чем-то другим.

С точки зрения уровня усилий попробуйте Tableau. Я почти уверен, что вы справитесь с этим быстрее, чем будет написан сценарий. Вы также можете экспортировать свои диаграммы/карты в PDF для точной настройки в Illustrator.

Даже бесплатная общедоступная версия предоставляет довольно надежные функции картографирования. Пока ваш набор данных имеет какое-то значимое имя, он может довольно хорошо распознавать географические территории из коробки.

Вот учебник, который даст вам представление о том, что возможно: https://www.interworks.com/blog/ccapitula/2015/02/25/tableau-essentials-formatting-tips-maps .

NB: все диаграммы/карты Tableau Public по умолчанию общедоступны. Кроме того, я не создавал этот учебник.

Для этого вы можете использовать самодельный пользовательский сценарий в сочетании с некоторыми данными электронной таблицы. Либо вы можете написать сами, либо ответ придет в этой ветке , либо вы можете попросить людей на форуме Adobe Illustrator Scripting написать его для вас.

При создании пользовательского скрипта вашей основной целью будет прикрепление данных к художественной форме с помощью некоторого «ключа», такого как имя пути на панели слоев, или с помощью примечаний к атрибутам, или даже с использованием функции переменных и прикрепления различные переменные для каждого пути. В электронной таблице вам нужно будет включить этот справочный ключ в один столбец и соответствующие данные о цвете, такие как имя образца или значения цвета, в другой столбец. Ваш пользовательский скрипт должен будет проанализировать данные CSV и раскрасить пути.

Если вы можете предоставить ссылку на свои файлы или использовать скриншоты для объяснения структуры вашей электронной таблицы и документа, это будет следующим шагом.

Я не знаю, нравится ли мне этот ответ, поскольку он слишком сильно зависит от внешних ссылок, не говоря на самом деле, почему я хотел бы использовать ссылку и что стоит за ссылкой, просто некоторые сомнительные ссылки, которые могут помочь или нет. Все еще думаю, нужно ли это минусовать или нет. Я имею в виду, что вы отрываетесь, говоря, что спросите где-нибудь еще.
Возможно, я могу переформулировать этот ответ, чтобы четко указать, какой абзац с каким идет и что именно находится за ссылками. Однако, поскольку вопрос заключается в том, «как к этому подступиться», я считаю, что это отвечает на вопрос, как к этому подступиться, и вопрос «где-то еще» может быть законным ответом, поскольку он буквально не говорит «спросите где-нибудь еще», но указывает на конкретное место.
Ну нет, ОП спросил здесь, давайте решим это здесь, если это возможно.
Не могли бы вы сказать, что это потребует хотя бы некоторых пользовательских сценариев? А раз так - едва ли достаточно информации о том, какие именно особенности относятся к рабочему документу, что, в свою очередь, вызывает вопрос о тех особенностях, поскольку они должны быть проработаны - нам просто не с чем здесь работать.
@silly Буду рад предоставить более подробную информацию. Что касается того, сколько людей может нуждаться в таком решении, я действительно удивлен, что там нет никаких руководств или потоков. Должно быть, тысячи графических дизайнеров кропотливо обновляют карты и графику для газет и журналов, вручную печатая и раскрашивая карты. Но этот метод очень подвержен ошибкам и отнимает много времени. Можно подумать, что с Google Fusion и другими доступными веб-инструментами старый графический мир будет следовать их примеру с новыми инструментами.
@JakobThuemoes, вероятно, правда, но в иллюстраторе нет интерфейса для этого. Сценарии, кажется, не находятся в верхней части списка вещей, которыми занимаются дизайнеры. Проблема в том, что визуализация данных — это не одна задача, внутри визуализации данных есть сотни различных задач, поэтому люди, которые полагаются на визуализацию в своей работе, используют такие инструменты, как mathematica, видят эти примеры обведенными иррациональными числами .

Я не знаком с возможностями сценариев/переменных в Illustrator, но недавно узнал о возможности создания простых диаграмм в Illustrator. Может быть проще создать карту и раскрасить значения вручную. Скучный? Да. Но это дает желаемые результаты.

Другие альтернативы: Tableau, как предложено, или новые функции в Excel с использованием инструмента «Карта» из магазина Excel быстро сделают эту работу.

Я только начал работать с Cognos 10 и буду работать над картами в ближайшие недели, так что если у вас есть Cognos Report Studio, вы можете пойти по этому пути.