Наиболее недоиспользуемая визуализация данных [закрыто]

StackOverflow https://stackoverflow.com/questions/2076370

Вопрос

Гистограммы и диаграммы рассеяния - отличные методы визуализации данных и взаимосвязи между переменными, но недавно я задумался о том, каких методов визуализации мне не хватает.Как вы думаете, какой тип сюжета является наиболее недоиспользуемым?

Ответы должны:

  1. Не очень часто используется в практике.
  2. Будьте понятны без большого количества предыстории обсуждения.
  3. Быть применимым во многих распространенных ситуациях.
  4. Включите воспроизводимый код для создания пример (предпочтительно на R).Связанное изображение было бы неплохо неплохо.
Это было полезно?

Решение

Я действительно согласен с другими плакатами: Книги Туфте фантастичны и его стоит прочесть.

Во-первых, я бы указал вам на очень хороший туториал по ggplot2 и ggobi из раздела "Анализ данных", опубликованного ранее в этом году.Помимо этого, я бы просто выделил одну визуализацию из R и два графических пакета (которые не так широко используются, как базовая графика, решетка или ggplot):

Тепловые карты

Мне действительно нравятся визуализации, которые могут обрабатывать многомерные данные, особенно данные временных рядов. Тепловые карты может быть полезно для этого.Один действительно аккуратный снимок был показан Дэвид Смит в блоге Revolutions.Вот код ggplot, любезно предоставленный Хэдли:

stock <- "MSFT"
start.date <- "2006-01-12"
end.date <- Sys.Date()
quote <- paste("http://ichart.finance.yahoo.com/table.csv?s=",
                stock, "&a=", substr(start.date,6,7),
                "&b=", substr(start.date, 9, 10),
                "&c=", substr(start.date, 1,4), 
                "&d=", substr(end.date,6,7),
                "&e=", substr(end.date, 9, 10),
                "&f=", substr(end.date, 1,4),
                "&g=d&ignore=.csv", sep="")    
stock.data <- read.csv(quote, as.is=TRUE)
stock.data <- transform(stock.data,
  week = as.POSIXlt(Date)$yday %/% 7 + 1,
  wday = as.POSIXlt(Date)$wday,
  year = as.POSIXlt(Date)$year + 1900)

library(ggplot2)
ggplot(stock.data, aes(week, wday, fill = Adj.Close)) + 
  geom_tile(colour = "white") + 
  scale_fill_gradientn(colours = c("#D61818","#FFAE63","#FFFFBD","#B5E384")) + 
  facet_wrap(~ year, ncol = 1)

Который в конечном итоге выглядит примерно так:

alt text

РГЛ:Интерактивная 3D Графика

Еще один пакет, изучение которого стоит затраченных усилий, - это РГЛ, который легко предоставляет возможность создавать интерактивную 3D-графику.В Интернете есть много примеров для этого (в том числе в документации rgl).

В R-Wiki есть хороший пример о том, как создавать точечные 3D-графики с использованием rgl.

ГГоби

Еще один пакет, о котором стоит знать, это рггоби.Есть книга Спрингера на эту тему, и множество отличной документации / примеров онлайн, в том числе на "Просмотр данных" конечно.

Другие советы

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

Вот пример из Quick-R:dotplot on car data

Я считаю, что Кливленд несет наибольшую ответственность за их разработку и распространение, и пример в его книге (в котором ошибочные данные были легко обнаружены с помощью точечной диаграммы) является мощным аргументом в пользу их использования.Обратите внимание, что в приведенном выше примере на строку ставится только одна точка, тогда как их реальная сила заключается в том, что у вас есть несколько точек на каждой строке с легендой, объясняющей, что есть что.Например, вы могли бы использовать разные символы или цвета для трех разных временных точек и, следовательно, легко получить представление о временных закономерностях в разных категориях.

В следующем примере (прежде всего, выполненном в Excel!) вы можете четко видеть, какая категория могла пострадать от замены меток.

Dotplot with 2 groups

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

Я думаю, это потому, что иногда ваши данные по своей сути полярный, а не линейный - например, он цикличен (координаты x представляют время в течение 24-часового дня в течение нескольких дней), или данные ранее были нанесены на карту полярного пространства объектов.

Вот пример.Этот график показывает средний объем трафика веб-сайта в разбивке по часам.Обратите внимание на два всплеска в 10 часов вечера и в 1 час ночи.Для сетевых инженеров Сайта это очень важно;также важно, что они происходят рядом друг с другом (просто два с разницей в несколько часов).Но если вы нанесете те же данные в традиционной системе координат, этот шаблон будет полностью скрыт - построенные линейно, эти два всплеска будут 20 разница в часах, какой они и есть, хотя в последующие дни их разница составляет всего два часа.Полярная диаграмма выше показывает это экономным и интуитивно понятным способом (легенда не обязательна).

Polar chart showing site traffic, with peaks at hours 1 and 22

Есть два способа (о которых я знаю) создавать подобные графики с использованием R (я создал график выше w / R).Один из них заключается в том, чтобы закодировать вашу собственную функцию либо в базовой, либо в сеточной графических системах.Другой способ, который проще, заключается в использовании круглая упаковка.Функция, которую вы бы использовали, это 'роза.диагноз':

data = c(35, 78, 34, 25, 21, 17, 22, 19, 25, 18, 25, 21, 16, 20, 26, 
                 19, 24, 18, 23, 25, 24, 25, 71, 27)
three_palettes = c(brewer.pal(12, "Set3"), brewer.pal(8, "Accent"), 
                   brewer.pal(9, "Set1"))
rose.diag(data, bins=24, main="Daily Site Traffic by Hour", col=three_palettes)

Если на вашем точечном графике так много точек, что он превращается в полный беспорядок, попробуйте сглаженный точечный график.Вот один из примеров:

library(mlbench) ## this package has a smiley function
n <- 1e5 ## number of points
p <- mlbench.smiley(n,sd1 = 0.4, sd2 = 0.4) ## make a smiley :-)
x <- p$x[,1]; y <- p$x[,2]
par(mfrow = c(1,2)) ## plot side by side
plot(x,y) ## left plot, regular scatter plot
smoothScatter(x,y) ## right plot, smoothed scatter plot

В hexbin пакет (предложенный @Dirk Eddelbuettel) используется для той же цели, но smoothScatter() имеет то преимущество, что он принадлежит к graphics пакет, и, таким образом, является частью стандартной установки R.

Smiley as a regular or smoothed scatter plot

Что касается sparkline и других идей Tufte, то Набор инструментов YaleToolkit посылка на КЛЮВ обеспечивает функции sparkline и sparklines.

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

Скрипичные сюжеты (которые сочетают прямоугольные графики с плотностью ядра) относительно экзотичны и довольно круты.В виоплот пакет в R позволяет вам создавать их довольно легко.

Вот пример (ссылка на википедию также показывает пример):

enter image description here

Еще одна приятная визуализация временных рядов, которую я только что рассматривал, - это "рельефная диаграмма" (как показано в этот пост в блоге "Learning R").Это очень полезно для визуализации изменений положения с течением времени.

Вы можете прочитать о том, как создать его на http://learnr.wordpress.com/, но вот как это в конечном итоге выглядит:

alt text

Мне также нравятся модификации boxplots от Tufte, которые позволяют вам намного проще сравнивать небольшие мультипликаторы, потому что они очень "тонкие" по горизонтали и не загромождают график лишними чернилами.Однако лучше всего это работает с довольно большим количеством категорий;если у вас их всего несколько на графике, обычные (Tukey) коробочные графики выглядят лучше, так как в них немного больше веса.

library(lattice)
library(taRifx)
compareplot(~weight | Diet * Time * Chick, 
  data.frame=cw , 
  main = "Chick Weights",
  box.show.mean=FALSE,
  box.show.whiskers=FALSE,
  box.show.box=FALSE
  )

compareplot

Другими способами их изготовления (включая другой вид коробчатого картона Tufte) являются обсуждается в этом вопросе.

Графики горизонтов (pdf), для визуализации множества временных рядов одновременно.

Графики параллельных координат (pdf), для многомерного анализа.

Ассоциация и мозаика графики для визуализации таблиц непредвиденных обстоятельств (см. видеомагнитофон упаковка)

Мы не должны забывать о милом и (исторически) важном участке из стеблей и листьев (который Туфте тоже любит!).Вы получаете прямой числовой обзор плотности и формы ваших данных (конечно, если ваш набор данных не превышает примерно 200 точек).В R функция stem создает ваш рисунок стебля и листа (в рабочей области).Я предпочитаю использовать gstem функция из пакета fmsb нарисовать его непосредственно на графическом устройстве.Ниже показано изменение температуры тела бобра (данные должны быть в вашем наборе данных по умолчанию) в виде стебля по листьям:

  require(fmsb)
  gstem(beaver1$temp)

enter image description here

В дополнение к превосходной работе Туфте, я рекомендую книги Уильяма С.Кливленд: Визуализация данных и Тот Элементы графических данных.Они не только превосходны, но и все они были сделаны на R, и я полагаю, что код находится в открытом доступе.

Коробочные сюжеты!Пример из справки R:

boxplot(count ~ spray, data = InsectSprays, col = "lightgray")

На мой взгляд, это самый удобный способ быстро просмотреть данные или сравнить распределения.Для более сложных дистрибутивов существует расширение, называемое vioplot.

Мозаичные сюжеты, как мне кажется, соответствуют всем четырем упомянутым критериям.Примеры есть в r, в разделе mosaicplot.

Ознакомьтесь с работами Эдварда Туфте и особенно эта книга

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

Кстати, мне нравится его техника визуализации данных sparkline.Сюрприз!Google уже написал это и разместил на Код Google

Сводные графики?Как упомянуто на этой странице:

Визуализация Сводной статистики и неопределенности

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top