exponenta event banner

Создание географической пузырьковой диаграммы на основе табличных данных

Географические пузырьковые диаграммы - это способ визуализации данных, наложенных на карту. Для данных с географическими характеристиками эти диаграммы могут обеспечить столь необходимый контекст. В этом примере выполняется импорт файла в MATLAB ® в виде таблицы и создание географической пузырьковой диаграммы из табличных переменных (столбцов). Затем вы работаете с данными в таблице, чтобы визуализировать аспекты данных, такие как размер населения.

Импортировать файл как таблицу

Загрузить образец файла counties.xlsx, который содержит записи населения и случаев болезни Лайма по графству в Новой Англии. Считывание данных в таблицу с помощью readtable.

counties = readtable('counties.xlsx');

Создание базовой географической пузырьковой диаграммы

Создайте географическую пузырьковую диаграмму, показывающую расположение округов в Новой Англии. Укажите таблицу в качестве первого аргумента, counties. Географическая пузырьковая диаграмма хранит таблицу в своей SourceTable собственность. В примере показаны первые пять строк таблицы. Используйте 'Latitude' и 'Longitude' столбцов таблицы для указания расположений. Диаграмма автоматически устанавливает пределы широты и долготы базовой карты, называемые базовой картой, для включения только тех областей, которые представлены данными. Назначить GeographicBubbleChart объект к переменной gb. Использовать gb для изменения диаграммы после ее создания.

figure
gb = geobubble(counties,'Latitude','Longitude');

head(gb.SourceTable, 5)
ans=5×19 table
    FIPS     ANSICODE     Latitude    Longitude         CountyName          State        StateName       Population2010    HousingUnits2010     LandArea     WaterArea     Cases2010    Cases2011    Cases2012    Cases2013    Cases2014    Cases2015    Cases2014_1    Cases2015_1
    ____    __________    ________    _________    _____________________    ______    _______________    ______________    ________________    __________    __________    _________    _________    _________    _________    _________    _________    ___________    ___________

    9001    2.1279e+05     41.228      -73.367     {'Fairfield County' }    {'CT'}    {'Connecticut'}      9.1683e+05         3.6122e+05       1.6185e+09    5.4916e+08       331          305          225          443          437          427           437            427    
    9003    2.1234e+05     41.806      -72.733     {'Hartford County'  }    {'CT'}    {'Connecticut'}      8.9401e+05         3.7425e+05       1.9039e+09    4.0213e+07       187          167          143          288          291          335           291            335    
    9005     2.128e+05     41.792      -73.235     {'Litchfield County'}    {'CT'}    {'Connecticut'}      1.8993e+05              87550       2.3842e+09    6.2166e+07        88          118           67          187          168          202           168            202    
    9007     2.128e+05     41.435      -72.524     {'Middlesex County' }    {'CT'}    {'Connecticut'}      1.6568e+05              74837       9.5649e+08    1.8068e+08       125          109           93          181          155          241           155            241    
    9009     2.128e+05      41.35        -72.9     {'New Haven County' }    {'CT'}    {'Connecticut'}      8.6248e+05           3.62e+05       1.5657e+09    6.6705e+08       240          249          213          388          459          474           459            474    

Можно панорамировать и увеличивать и уменьшать базовую карту, отображаемую с помощью geobubble функция.

Визуализация населения округа на диаграмме

Используйте размер пузыря (диаметр), чтобы указать относительные популяции различных округов. Укажите Population2010 переменная в таблице как значение SizeVariable параметр. На результирующей географической диаграмме пузырьки имеют различные размеры для обозначения популяции. Диаграмма содержит легенду, описывающую, как диаметр выражает размер. Корректировка пределов диаграммы с помощью geolimits.

gb = geobubble(counties,'Latitude','Longitude',...
                        'SizeVariable','Population2010');
geolimits([39.50 47.17],[-74.94 -65.40])

geobubble линейно масштабирует диаметры пузырьков между значениями, заданными SizeLimits собственность.

Визуализация случаев болезни Лайма по округу

Используйте цвет пузыря, чтобы показать количество случаев болезни Лайма в округе для данного года. Для отображения данных этого типа, geobubble функция требует, чтобы данные были categorical значение. Первоначально ни один из столбцов в таблице не является категориальным, но его можно создать. Например, можно использовать discretize для создания категориальной переменной из данных в Cases2010 переменная. Новая переменная с именем Severity, группирует данные по трем категориям: Низкий, Средний и Высокий. Использовать эту новую переменную в качестве ColorVariable параметр. Эти изменения изменяют таблицу, сохраненную в SourceTable свойство, которое является копией исходной таблицы в рабочей области, counties. Внесение изменений в таблицу, сохраненную в GeographicBubbleChart объект позволяет избежать влияния на исходные данные.

gb.SourceTable.Severity = discretize(counties.Cases2010,[0 50 100 500],...
                                 'categorical', {'Low', 'Medium', 'High'});
gb.ColorVariable = 'Severity';

Обработать неопределенные данные

При печати информации о степени серьезности в легенде цвета появляется четвертая категория: undefined. Эта категория может отображаться при приведении данных к categorical содержит пустые значения или значения, которые выходят за рамки определенных категорий. Определите причину неопределенного Severity путем наведения курсора на неопределенный пузырь. Совет данных показывает, что пузырь представляет значения в 33-й строке таблицы болезни Лайма.

Проверьте значение переменной, используемой для серьезности, Cases2010, которая является 12-й переменной в 33-й строке таблицы болезни Лайма.

gb.SourceTable(33,12)
ans=table
    Cases2010
    _________

       514   

High категория определяется как значения от 100 до 500. Однако значение переменной Cases2010 равно 514. Чтобы исключить это неопределенное значение, сбросьте верхний предел категории High, чтобы включить это значение. Например, используйте 5000.

gb.SourceTable.Severity = discretize(counties.Cases2010,[0 50 100 5000],...
                                 'categorical', {'Low', 'Medium', 'High'});

В отличие от цветовой переменной, когда geobubble обнаруживает неопределенное число (NaN) в переменных размера, широты или долготы, оно игнорирует значение.

Выбрать цвета пузырей

Используйте градиент цвета для представления категории «Низкий-средний-высокий». geobubble сохраняет цвета в виде списка m-by-3 значений RGB в BubbleColorList собственность.

gb.BubbleColorList = autumn(3);

Переупорядочить цвета пузырей

Измените цвет, указывающий на высокую степень серьезности, на красный, а не желтый. Чтобы изменить порядок цветов, можно изменить порядок категорий или цветов, перечисленных в BubbleColorList собственность. Например, первоначально категории упорядочены как Low-Medium-High. Используйте reordercats для изменения категорий на High-Medium-Low. Категории изменяются в цветовой легенде.

neworder = {'High','Medium','Low'};
gb.SourceTable.Severity = reordercats(gb.SourceTable.Severity,neworder);

Добавление заголовков

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

title 'Lyme Disease in New England, 2010'
gb.SizeLegendTitle = 'County Population';
gb.ColorLegendTitle = 'Lyme Disease Severity';

Уточнение данных диаграммы

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

gb.SourceTable.CasesPer1000 = gb.SourceTable.Cases2010 ./ gb.SourceTable.Population2010 * 1000;
gb.SizeVariable = 'CasesPer1000';
gb.SizeLegendTitle = 'Cases Per 1000';

Размеры пузырей теперь рассказывают другую историю, чем раньше. Районы с наибольшим населением отслеживались относительно хорошо с различными уровнями тяжести. Однако при рассмотрении числа случаев, нормализованных по численности населения, представляется, что наибольший риск на душу населения имеет различное географическое распределение.

См. также

| | | | | |

Связанные темы