Візуалізація декількох "гістограм" (бар-діаграм)


9

У мене виникають труднощі вибрати правильний спосіб візуалізації даних. Скажімо, у нас є книгарні, які продають книги , і кожна книга має принаймні одну категорію .

Для книгарні, якщо порахувати всі категорії книг, ми отримуємо гістограму, яка показує кількість книг, які потрапляють у певну категорію для цієї книгарні.

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

Маю ~ 1М книгарні.

Я продумав 4 методи:

  1. Відібрати дані, показати лише 500 гістограм книгарні. Покажіть їх на 5 окремих сторінках за допомогою сітки 10х10. Приклад сітки 4x4:

    множинні гістограми 1

  2. Те саме, що №1. Але цього разу сортуйте значення осі x відповідно до їх рахунку, тому, якщо є користь, це буде видно легко.

  3. Уявіть, як скласти гістограми №2 разом, як колоду, і показати їх у 3D. Щось на зразок цього:
    3D гістограма

  4. Замість використання кольору третьої осі для подання кольорів, тому використовуючи теплову карту (2D гістограма): 2D гістограма
    Якщо книгарні, як правило, віддають перевагу одним категоріям перед іншими, вони відображатимуться як гарний градієнт зліва направо.

Чи є у вас інші ідеї / засоби візуалізації для представлення декількох гістограм?


4
Я думаю, ви маєте на увазі гістограми, а не гістограми
Роб Хайндман

@Rob: Хістограма не є спеціальним типом смугової діаграми, що представляє розподіл частоти? Я намагаюся візуалізувати частотні категорії для багатьох книжкових магазинів.
nimcap

1
@nimcap Ні, оскільки гістограма є над суцільною змінною, а категорія книги - категоріальною змінною.

@mbq Скажімо, у книжковому магазині є 3 книги, а їхні категорії: B1: [c1, c2, c3] B2: [c1, c3] B3: [c1, c4]. Коли ми агрегуємо підрахунки категорій, отримуємо [c1 x 3, c2 x 1, c3 x 2, c4 x 1]. Хіба цього недостатньо для створення гістограми?
nimcap

2
@nimcap Ні, цього достатньо для створення діаграми. Гістограму можна зробити, наприклад, за ціну книги.

Відповіді:


12

Як ви з’ясували, відповіді на ваше запитання немає просто!

Я припускаю, що вам цікаво знайти дивні чи різні книжкові магазини? Якщо це так, то ви можете спробувати такі речі, як PCA (див. Сторінку аналізу кластерів wikipedia для отримання більш детальної інформації).

Щоб дати вам ідею, розглянемо цей приклад. У вас є 26 книгарнь (з іменами A, B, .. Z). Усі книгарні схожі, крім:

  1. Shop Z продає лише кілька книг історії.
  2. Магазини OY продають більше романтичних книг, ніж в середньому.

Основні сюжетні компоненти виділяють ці магазини для подальшого дослідження.

Ось кілька зразків коду R:

> d = data.frame(Romance = rpois(26, 50), Horror = rpois(26, 100), 
               Science = rpois(26, 75), History = rpois(26, 125))
> rownames(d) = LETTERS
#Alter a few shops
> d[15:25,][1] = rpois(11,150)
> d[26,][4] = rpois(1, 10)
#look at the data
> head(d, 2)
       Romance Horror Science History
 A      36    107      62     139
 B      47     93      64     118
> books.PC.cov = prcomp(d)
> books.scores.cov = predict(books.PC.cov)
# Plot of PC1 vs PC2
> plot(books.scores.cov[,1],books.scores.cov[,2],
       xlab="PC 1",ylab="PC 2", pch=NA)
> text(books.scores.cov[,1],books.scores.cov[,2],labels=LETTERS)

Це дає такий сюжет:

Сюжет PCA http://img265.imageshack.us/img265/7263/tmplx.jpg

Зауважте, що:

  1. Магазин z - це відмінна точка.
  2. Інші магазини утворюють дві окремі групи.

Інші можливості

Ви також можете подивитися на GGobi , я ніколи його не використовував, але це виглядає цікаво.


Дякую за цінну відповідь. Ситуацію важко описати навіть рідною мовою :) Дозвольте спробувати. Мене не цікавить, чи віддають перевагу книжкові магазини певним категоріям, але хочу перевірити, чи вони надають перевагу категоріям. Насправді це я очікую. Скажімо, у мене є 3 книгарні (B1, B2, B3) та 4 категорії (C1, C2, C3, C4). Це їхні дані про продаж: B1 (1, 1, 20, 20) B2 (90, 1, 1, 1), B3 (1, 1, 1, 30). Переглядаючи ці дані, я можу сказати, що вони віддають перевагу одній категорії перед іншими. Але якщо дані були як B1 (20, 30, 20, 20) B2 (90, 100, 100, 100), B3 (30, 30, 40, 40), я не можу цього сказати.
nimcap

У моєму прикладі магазини OY віддають перевагу романтичним книгам. Ось чому ці магазини знаходяться в окремій групі в сюжеті ПК.
csgillespie

2
Я проголосував за це як добру загальну відповідь, але як практичну відповідь, розгляд цього багатьох даних даних буде жорстоким.
Іван

1
+1 Це, звичайно, не те, чого хоче ОП, все-таки це те, що вона / він повинен хотіти.

1
+1 Хороший приклад застосування PCA "вниз до Землі".
nico

3

Я б запропонував щось, що не має визначеної назви (можливо, "паралельний сюжет") і виглядає приблизно так:

alt текст

В основному ви будуєте всі підрахунки для всіх книжкових магазинів як точки над категоріями, переліченими на осі x, а результати кожної книгарні з'єднуєте з рядком. Однак це може бути занадто заплутаним для 1М рядків. Концепція походить від GGobi, про який вже згадував csgillespie.


1
Паралельні сюжети сильно залежать від "правильного" впорядкування змінних, тому для занадто багатьох категорій це стане втомливим. І правильним джерелом, здається, є А.Інсельберг, 1981.
Бенджамін Баньє

3
Їх називають паралельними ділянками координат: en.wikipedia.org/wiki/Parallel_coordinate
Саймон Бірн

@Simon спасибі; @honk Я згоден, це одна з причин, чому я їх не використовую.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.