Я хотел бы показать, как значения определенных переменных (~ 15) меняются со временем, но я также хотел бы показать, как переменные отличаются друг от друга в каждом году. Итак, я создал этот сюжет:
Но даже при изменении цветовой схемы или добавлении различных типов линий / форм это выглядит грязно. Есть ли лучший способ визуализировать такие данные?
Тестовые данные с кодом R:
structure(list(Var = structure(c(1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L,
6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 13L, 14L, 14L, 14L, 14L,
14L, 14L, 14L, 16L, 16L, 16L, 16L, 16L, 16L, 17L, 17L, 17L, 17L,
17L, 17L, 17L, 18L, 18L, 18L, 18L, 18L, 18L, 18L), .Label = c("A",
"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"), class = "factor"),
Year = c(2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L,
1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1993L, 1996L, 2000L,
2004L, 2011L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L,
1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L, 1993L, 1996L,
2000L, 2004L, 2011L, 2015L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L,
1991L, 1993L, 1996L, 2000L, 2011L, 2015L, 1991L, 1993L, 1996L,
2000L, 2004L, 2011L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L,
2011L, 2015L), Val = c(25.6, 22.93, 20.82, 24.1, 24.5, 29,
25.55, 24.5, 24.52, 20.73, 25.8, 25.5, 29.5, 27.7, 25.1,
25, 24.55, 26.75, 25, 30.5, 27.25, 25.1, 22.4, 27.07, 26,
29, 27.2, 24.2, 23, 24.27, 27.68, 27, 30.5, 28.1, 24.9, 23.75,
22.75, 27.25, 25, 29, 28.45, 24, 20.25, 17.07, 24.45, 25,
28.5, 26.75, 24.9, 21.25, 20.65, 25.1, 24.5, 26.5, 25.35,
23.5, 21.93, 26.5, 24.5, 29, 29.1, 26.4, 28.1, 23.75, 26.5,
28.05, 27, 30.5, 25.65, 23.3, 23.25, 24.57, 26.07, 27.5,
28.85, 27.7, 22, 23.43, 26.88, 27, 30.5, 29.25, 28.1, 23,
23.8, 28.32, 27, 29.5, 29.15, 27.6)), row.names = c(1L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L,
21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 35L,
36L, 37L, 38L, 39L, 40L, 41L, 44L, 45L, 46L, 47L, 48L, 49L, 50L,
53L, 54L, 55L, 56L, 57L, 58L, 59L, 62L, 63L, 64L, 65L, 66L, 67L,
68L, 69L, 70L, 71L, 72L, 73L, 74L, 75L, 78L, 79L, 80L, 81L, 82L,
83L, 84L, 87L, 88L, 89L, 90L, 91L, 92L, 95L, 96L, 97L, 98L, 99L,
100L, 101L, 104L, 105L, 106L, 107L, 108L, 109L, 110L), na.action = structure(c(2L,
3L, 11L, 12L, 33L, 34L, 42L, 43L, 51L, 52L, 60L, 61L, 76L, 77L,
85L, 86L, 93L, 94L, 102L, 103L), .Names = c("2", "3", "11", "12",
"33", "34", "42", "43", "51", "52", "60", "61", "76", "77", "85",
"86", "93", "94", "102", "103"), class = "omit"), class = "data.frame", .Names = c("Var",
"Year", "Val"))
r
data-visualization
амеба говорит восстановить монику
источник
источник
Ответы:
Случайно или нет, ваш пример имеет оптимальный размер (до 7 значений для каждой из 15 групп), чтобы показать, что существует проблема графически; и во-вторых, чтобы позволить другие и довольно простые решения. График такого типа часто называют спагетти людьми в разных областях, хотя не всегда понятно, подразумевается ли этот термин как ласковый или оскорбительный. График показывает коллективное или семейное поведение всех групп, но он довольно безнадежен, показывая детали для изучения.
Одна стандартная альтернатива - просто показать отдельные группы на отдельных панелях, но это, в свою очередь, может затруднить точное сравнение между группами; каждая группа отделена от контекста других групп.
Так почему бы не объединить обе идеи: отдельную панель для каждой группы, а также показать другие группы в качестве фона? Это зависит главным образом от выделения группы, которая находится в фокусе, и от недооценки других, что достаточно просто в этом примере, учитывая некоторое использование цвета линии, толщины и т. Д. В других примерах выбор маркера или точечного символа может быть естественным.
В этом случае выделяются детали возможного практического или научного значения или интереса:
У нас есть только одно значение для A и M.
У нас нет всех значений для всех данных лет во всех других случаях.
Некоторые группы строят высокие, некоторые низкие и так далее.
Я не буду пытаться интерпретировать здесь: данные анонимны, но в любом случае это проблема исследователя.
В зависимости от того, что легко или возможно в вашем программном обеспечении, здесь есть возможность изменить мелкие детали, например, повторяются ли метки оси и заголовки (существуют простые аргументы как за, так и против).
Большая проблема заключается в том, насколько эта стратегия будет работать в целом. Количество групп является основным фактором, больше, чем количество баллов в каждой группе. Грубо говоря, этот подход может работать примерно до 25 групп (скажем, с дисплеем 5 x 5): с увеличением числа групп графики не только становятся меньше и труднее для чтения, но даже исследователь теряет склонность сканировать все панели. Если бы были сотни (тысячи, ...) групп, обычно было бы необходимо выбрать небольшое количество групп для показа. Потребуется некоторое сочетание критериев, таких как выбор «типичных» и «экстремальных» панелей; это должно зависеть от целей проекта и некоторого представления о том, что имеет смысл для каждого набора данных. Другой подход, который может быть эффективным, состоит в том, чтобы выделить небольшое количество серий в каждой панели. Так, если бы было 25 широких групп, каждая широкая группа могла бы быть показана со всеми другими в качестве фона. В качестве альтернативы может быть некоторое усреднение или другое суммирование. Использование (например) главных или независимых компонентов также может быть хорошей идеей.
Хотя этот пример требует линейных графиков, этот принцип, естественно, носит гораздо более общий характер. Примеры могут быть умножены, точечные диаграммы, модельные диагностические диаграммы и т. Д.
Некоторые ссылки на этот подход [другие приветствуются]:
Кокс, Нью-Джерси 2010. Графические подмножества. Stata Journal 10: 670-681.
Knaflic, CN 2015. Рассказывание историй с данными: Руководство по визуализации данных для бизнес-профессионалов. Хобокен, Нью-Джерси: Wiley.
Кенкер Р. 2005. Квантильная регрессия. Кембридж: издательство Кембриджского университета. Смотри стр.12-13.
Швабиш, JA 2014. Руководство экономиста по визуализации данных. Журнал экономических перспектив 28: 209-234.
Unwin, A. 2015. Графический анализ данных с R. Boca Raton, FL: CRC Press.
Уоллгрен А., Б. Уоллгрен, Р. Перссон, У. Йорнер и Ж.-А. Haaland. 1996. Графическая статистика и данные: создание лучших графиков. Ньюбери Парк, Калифорния: Мудрец.
Примечание. График был создан в Stata.
subsetplot
должен быть установлен первым сssc inst subsetplot
. Данные были скопированы и вставлены из R и метки значений были определены, чтобы показать годы как90 95 00 05 10 15
. Основная командаРЕДАКТИРОВАТЬ Дополнительные ссылки май, сентябрь, декабрь 2016 года; Апрель, июнь 2017 года, декабрь 2018 года, апрель 2019 года:
Каир, а. 2016. Истинное искусство: данные, диаграммы и карты для общения. Сан-Франциско, Калифорния: Новые Райдеры. p.211
Camões, J. 2016. Данные на работе: лучшие практики для создания эффективных диаграмм и информационной графики в Microsoft Excel . Сан-Франциско, Калифорния: Новые Райдеры. p.354
Карр, Д.Б. и Пикл, Л.В. 2010. Визуализация шаблонов данных с помощью микрокарт. Бока-Ратон, Флорида: CRC Press. с.85.
Грант, р. 2019. Визуализация данных: диаграммы, карты и интерактивная графика. Бока-Ратон, Флорида: CRC Press. с.52.
Копонен, Дж. И Хильден, Дж. 2019. Справочник по визуализации данных. Эспоо: Aalto ARTS Books. Смотри с.101.
Крибель, А. и Мюррей, Е. 2018. #MakeoverMonday: Улучшение того, как мы визуализируем и анализируем данные, по одной диаграмме за раз. Хобокен, Нью-Джерси: Джон Уайли. с.303.
Rougier, NP, Droettboom, M. and Bourne, PE 2014. Десять простых правил для улучшения показателей. PLOS Computational Biology 10 (9): e1003833. doi: 10.1371 / journal.pcbi.1003833 ссылка здесь
Швабиш, J. 2017. Лучшие презентации: руководство для ученых, исследователей и Wonks. Нью-Йорк: издательство Колумбийского университета. Смотри с.98.
Wickham, H. 2016. ggplot2: Элегантная графика для анализа данных. Чам: Спрингер. Смотри с.157.
источник
В качестве дополнения к ответу Ника вот код R для создания аналогичного графика с использованием смоделированных данных:
источник
Для тех, кто хочет использовать
ggplot2
подход в R, рассмотримfacetshade
функцию в пакетеextracat
. Это предлагает общий подход, а не только для линейных участков. Вот пример с диаграммами рассеяния (из подножия этой страницы ):РЕДАКТИРОВАТЬ: Используя смоделированный набор данных Адриана из его предыдущего ответа:
Другой подход - нарисовать два отдельных слоя, один для фона и один для выделенных случаев. Хитрость заключается в том, чтобы нарисовать фоновый слой с использованием набора данных без переменной фасетирования. Для набора данных оливкового масла код:
источник
ggplot(df %>% select(-label), aes(x=time, y=y, group=label2)) + geom_line(alpha=0.8, color="grey") + labs(y=NULL) + geom_line(data=df, color="red") + facet_wrap(~ label)
Вот решение, вдохновленное гл. 11.3, раздел «Данные по жилью в Техасе», в книге Хэдли Уикхем на ggplot2 . Здесь я подгоняю линейную модель к каждому временному ряду, беру остатки (которые сосредоточены вокруг среднего 0) и рисую итоговую линию другим цветом.
источник