В 2006 г. выступление профессора Ханса Рослинга на конференции "Технологии, Развелечения, Дизайн" (TED, Technology Entertainment Design) произвело своего рода революцию в способах интерактивной визуализации многомерных данных (см. также здесь). Речь идет об анимационных графиках, которые проф. Рослинг использовал в своей презентации для анализа социально-экономической ситуации в мире за последние 50 лет.
Пример графика такого типа приведен ниже. На нем отражена динамика продаж трех видов фруктов (Яблоки, Бананы, Апельсины) в двух регионах (Запад и Восток). Имеются обширные возможности для визуализации зависимостей между различными переменными. Например, мы можем выбрать переменную "Время" для отображения на оси абсцисс и "Затраты" на оси ординат, раскрасить "пузыри" на графике в соответствии с регионом (Color / Регион), прикрепить названия фруктов к каждому "пузырю" (меню Select), и посмотреть, что получается, нажав кнопку воспроизведения. Попробуйте разные сочетания, чтобы "прочувствовать" возможности этого инструмента.
Приведенный выше график был построен на основе таблицы данных Fruits, входящей в состав библиотеки googleVis. Подключаем эту таблицу к рабочей среде R и просматриваем ее содержимое:
Приведенный выше график был построен на основе таблицы данных Fruits, входящей в состав библиотеки googleVis. Подключаем эту таблицу к рабочей среде R и просматриваем ее содержимое:
data(Fruits) Fruits
В оригинальной таблице все названия приведены на английском языке. Я заменил их на русскоязычные аналоги позднее непосредственно в html-коде графика.
Для создания графика была использована функция gvisMotionChart(). Она имеет четыре основных аргумента:
gvisMotionChart(data, idvar = "id", timevar="date", chartid),
M <- gvisMotionChart(Fruits, idvar = "Fruit", timevar = "Year")
print(M, tag = "chart")
При помощи функций библиотеки googleVis можно создавать множество различных типов графиков, а также объединять их на одной странице. Для ознакомления с имеющимися возможностями выполните команду
demo(googleVis)
Создано при помощи Pretty R на сайте inside-R.org
Загрузил данные через консоль:
time <- c("12.15.2011 7:41:52", "12.15.2011 7:43:07", "12.15.2011 17:53:08", "12.15.2011 17:58:19", "12.15.2011 17:59:13", "12.15.2011 18:09:33", "12.15.2011 18:14:02", "12.15.2011 18:16:11", "12.15.2011 18:24:07", "12.15.2011 18:32:27", "12.15.2011 20:00:33", "12.15.2011 20:49:44", "12.15.2011 22:04:33", "12.15.2011 23:03:45", "12.15.2011 23:25:37", "12.16.2011 2:48:53", "12.16.2011 5:47:36", "12.16.2011 9:47:38", "12.16.2011 19:34:55", "12.16.2011 19:52:47", "12.16.2011 19:53:19", "12.16.2011 19:53:37", "12.16.2011 20:13:50", "12.16.2011 21:06:16", "12.16.2011 21:35:09", "12.16.2011 21:46:28", "12.16.2011 22:30:20", "12.16.2011 23:57:28", "12.17.2011 11:31:57", "12.17.2011 11:44:14", "12.17.2011 14:37:00", "12.18.2011 13:10:15", "12.19.2011 11:09:43", "12.19.2011 13:59:43", "12.19.2011 14:20:26", "12.19.2011 14:47:19", "12.19.2011 19:37:59", "12.20.2011 12:41:37", "12.20.2011 13:04:03", "12.20.2011 13:46:25")
choice <- c("Option 1", "Option 2", "Option 1", "Option 2", "Option 2", "Option 1", "Option 2", "Option 1", "Option 1", "Option 2", "Option 2", "Option 1", "Option 2", "Option 2", "Option 2", "Option 1", "Option 2", "Option 1", "Option 2", "Option 2", "Option 1", "Option 2", "Option 2", "Option 2", "Option 2", "Option 2", "Option 2", "Option 2", "Option 2", "Option 1", "Option 1", "Option 2", "Option 1", "Option 2", "Option 2", "Option 2", "Option 2", "Option 2", "Option 2", "Option 2")
data <- data.frame(time, choice)
Трансформировал формат "дата-время" в формат "дата":
data$time <- strptime(data$time, "%m.%d.%Y %H:%M:%S")
data$time <- as.Date(data$time, format="%Y-%m-%d %H:%M:%S")
Запустил библиотеку, попытался создать анимированный график:
library(googleVis)
M <- gvisMotionChart(data, idvar = "choice", timevar="time")
Получаю ошибку:
Error in gvisCheckMotionChartData(data, my.options) :
The data must have rows with unique combinations of idvar and timevar.
Your data has 40 rows, but idvar and timevar only define 10 unique rows.
Если вызвать fix(data), видно, что с матрицей данных все ОК, все40 кейсов определены правильно.
В чем проблема? Версия R - 2.13.2, googleVis - 0.2.12.
Проблема именно в том, о чем сказано в выданной программой ошибке. У Вас мало данных для построения анимированного графика. Есть только время и фактор с двумя уровнями. Отсутствует количественная переменная(-ные), измеренная(-ные) для КАЖДОГО из этих уровней в ОПРЕДЕЛЕННОЕ время.
Изучите внимательно пример с фруктами, приведенный в моей статье. Например, для 2008 года есть КОЛИЧЕСТВЕННЫЕ данные о продажах (Sales) и для апельсинов, и для яблок, и для бананов. Аналогичные данные есть для всех трех видов фруктов и для 2009, и для 2010 годов. В Вашей же таблице, например, для времени 2011-12-15 07:41:52 есть только указание уровня фактора choice (Option 1), но нет соответствующего измерения какой-либо количественной переменной. Хуже того, для этой временной точки у Вас нет информации по Option 2 - отсюда и выданная программой ошибка об отсутствии уникальных комбинаций для idvar и timevar.
Надеюсь, мой ответ оказался не слишком запутанным... Дайте знать, получилось ли разобраться с этой проблемой.
Отправить комментарий