Visualisation de plusieurs «histogrammes» (graphiques à barres)

9

J'ai des difficultés à sélectionner la bonne façon de visualiser les données. Disons que nous avons des librairies qui vendent des livres , et chaque livre a au moins une catégorie .

Pour une librairie, si nous comptons toutes les catégories de livres, nous acquérons un histogramme qui montre le nombre de livres qui tombe dans une catégorie spécifique pour cette librairie.

Je veux visualiser le comportement de la librairie, je veux voir s'ils favorisent une catégorie par rapport aux autres catégories. Je ne veux pas voir s'ils favorisent la science-fiction tous ensemble, mais je veux voir s'ils traitent toutes les catégories de manière égale ou non.

J'ai environ 1 million de librairies.

J'ai pensé à 4 méthodes:

  1. Échantillonnez les données, montrez seulement 500 histogrammes de librairie. Montrez-les sur 5 pages distinctes en utilisant une grille 10x10. Exemple d'une grille 4x4:

    histogrammes multiples 1

  2. Identique à # 1. Mais cette fois, triez les valeurs de l'axe x en fonction de leur nombre de descentes, donc s'il y a une faveur, cela sera facilement visible.

  3. Imaginez que vous assembliez les histogrammes du n ° 2 comme un deck et que vous les montriez en 3D. Quelque chose comme ça:
    Histogramme 3D

  4. Au lieu d'utiliser le troisième axe pour poursuivre la couleur afin de représenter les couleurs, utilisez donc une carte thermique (histogramme 2D): Histogramme 2D
    Si généralement les librairies préfèrent certaines catégories aux autres, elles seront affichées comme un joli dégradé de gauche à droite.

Avez-vous d'autres idées / outils de visualisation pour représenter plusieurs histogrammes?

nimcap
la source
4
Je pense que vous voulez dire des graphiques à barres plutôt que des histogrammes
Rob Hyndman
@Rob: l'histogramme n'est-il pas un type particulier de graphique à barres qui représente une distribution de fréquence? J'essaie de visualiser les fréquences des catégories pour de nombreuses librairies.
nimcap
1
@nimcap Non, car l'histogramme est sur une variable continue et la catégorie de livre est une variable catégorielle.
@mbq Disons qu'une librairie compte 3 livres et que leurs catégories sont: B1: [c1, c2, c3] B2: [c1, c3] B3: [c1, c4]. Lorsque nous agrégons le nombre de catégories, nous obtenons [c1 x 3, c2 x 1, c3 x 2, c4 x 1]. N'est-ce pas suffisant pour générer un histogramme?
nimcap
2
@nimcap Non, il suffit de générer un graphique à barres. L'histogramme peut être réalisé par exemple pour le prix d'un livre.

Réponses:

12

Comme vous l'avez découvert, il n'y a pas de réponses faciles à votre question!

Je suppose que vous êtes intéressé à trouver des librairies étranges ou différentes? Si tel est le cas, vous pouvez essayer des choses comme PCA (voir la page d' analyse des clusters de wikipedia pour plus de détails).

Pour vous donner une idée, considérez cet exemple. Vous avez 26 librairies (avec les noms A, B, .. Z). Toutes les librairies sont similaires, sauf:

  1. La boutique Z ne vend que quelques livres d'histoire.
  2. Les magasins OY vendent plus de livres d'amour que la moyenne.

Un tracé des composants principaux met en évidence ces magasins pour une enquête plus approfondie.

Voici un exemple de code 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)

Cela donne le tracé suivant:

Tracé PCA http://img265.imageshack.us/img265/7263/tmplx.jpg

Remarquerez que:

  1. Shop z est un point périphérique.
  2. Les autres magasins forment deux groupes distincts.

Autres possibilités

Vous pouvez également regarder GGobi , je ne l'ai jamais utilisé, mais il semble intéressant.

csgillespie
la source
Merci pour votre précieuse réponse. La situation est difficile à décrire même dans ma langue maternelle :) Laissez-moi essayer. Je ne suis pas intéressé si les librairies favorisent des catégories particulières mais je veux voir si elles favorisent les catégories. En fait, c'est ce que j'attends. Disons que j'ai 3 librairies (B1, B2, B3) et 4 catégories (C1, C2, C3, C4). Ce sont leurs données de vente: B1 (1, 1, 20, 20) B2 (90, 1, 1, 1), B3 (1, 1, 1, 30). En regardant ces données, je peux dire qu'elles préfèrent certaines catégories à d'autres. Mais si les données étaient comme B1 (20, 30, 20, 20) B2 (90, 100, 100, 100), B3 (30, 30, 40, 40), je ne peux pas dire cela.
nimcap
Dans mon exemple, les magasins OY privilégient les livres d'amour. C'est pourquoi ces magasins sont dans un groupe distinct dans l'intrigue PC.
csgillespie
2
J'ai voté pour une bonne réponse générale, mais comme une réponse pratique, traiter de nombreux points de données va être brutal.
John
1
+1 Ce n'est certainement pas ce que veut OP, mais c'est certainement ce qu'il / elle devrait vouloir.
1
+1 Bel exemple d'une application "terre-à-terre" de PCA.
nico
3

Je suggérerais quelque chose qui n'a pas de nom défini (probablement "tracé parallèle") et ressemble à ceci:

texte alternatif

Fondamentalement, vous tracez tous les décomptes de toutes les librairies sous forme de points sur les catégories répertoriées sur l'axe des x et connectez les résultats de chaque librairie à une ligne. Cependant, cela peut être trop emmêlé pour les lignes 1M. Le concept vient de GGobi qui était déjà mentionné par csgillespie.

Glorfindel
la source
1
Les tracés parallèles dépendent fortement du "bon" ordre des variables, donc pour trop de catégories, cela deviendra fastidieux. Et la bonne source semble être A.Inselberg, 1981.
Benjamin Bannier
3
On les appelle des tracés de coordonnées parallèles: en.wikipedia.org/wiki/Parallel_coordinates
Simon Byrne
@Simon merci; @honk Je suis d'accord, c'est une des raisons pour lesquelles je ne les utilise pas.