Durant ma présentation à la conférence Tableau TC2018,
on m' a demandé d'expliquer comment j'avais créé une de mes
visualisations (lien vers ma présentation)
La visualisation ci-dessus est composée de deux
parties :
- Le diagramme circulaire de gauche représente les transactions bancaires entre les clients et les commerçants du secteur beauté et bien être (points rouge) agrégées par client. Ainsi, nous sommes capables d'identifier les clients récurrents des commerçants. Sur la partie haute du cercle sont représentés les clients, et sur la partie basse l'ensemble des commerçants. Ce détail est important car il déterminera les calculs de coordonnées.
- La visualisation de droite montre la distribution des clients de ces commerçants, nous permettant ainsi de nous donner des informations sur leur clientèle.
L'idée ici est d'obtenir des informations sur
l'activité des commerçants, qui ne sont pas nos clients, en se servant des
transactions bancaires de nos clients. Et ensuite de contacter les commerçants
qui nous semble intéressants car disposant d'une clientèle bien établie, ou
disposant d'une bonne réputation parmi nos clients. Ceci est un cas fictif.
Comment faire le diagramme circulaire
1. Comme toujours, la première étape est de modifier les données. Nous devons obtenir une structure comme celle-ci dessous où chaque ligne est dupliquée (destination et origin).
On peut soit préparer les données sur Excel, Tableau
ou Tableau Prep, mais l'étape importante consiste à dupliquer les données. J'ai
décidé de le faire sur Prep mais vous pouvez le faire sur Tableau directement.
Ci-après le flux de Tableau Prep me permettant de
construire la base de données ( pas seulement la duplication).
Si vous le faites sur Tableau directement, vous avez
besoin de deux feuilles Excel :
- une contenant vos données brutes (ici les
transactions)
- la seconde servant à dupliquer les données contenant
juste deux lignes
- origine
- destination
Vous pouvez ensuite joindre les deux feuilles Excel
sur Tableau avec un INNER JOIN en utilisant la condition 1=1.
2. Le diagramme circulaire est dessiné grâce aux fonctions trigonométriques ( il fallait écouter en 4eme :) ). Nous allons calculer les coordonnées x et y afin de pouvoir placer les différents commerçants et les clients sur le cercle. Pour plus de clarté, je vais placer tous les clients sur la partie haute du cercle et les commerçants (avec lesquels mes clients ont des relations commerciales) sur la partie basse du cercle. Afin de placer les points de manière équidistantes, je vais utiliser un champs de ma base de données " id clients", qui pour chaque client me donne un identifiant unique.
Soit :
x = cos (angle)
x = cos (angle)
y = sin (
angle)
angle = if [Origin Destination]="origin"
then [angle customer]
else [angle merchant] END
avec angle customer = PI()*[Id Customer]/({ FIXED : MAX([Id Customer])}+1)
et de la même façon : angle merchant = -PI()*[Id Merchant]/({ FIXED : MAX([Id Merchant])}+1)
Ces calculations permettent de repartir les commerçants et les clients sur les deux parties du cercle et divise le cercle en autant de sections que nécessaires pour contenir tous les clients et tous les commerçants.
Placer ensuite
- en ligne : [x]
- en colonne : [y]
- en couleur : [destination origin] ( destination en rouge and origin en noir).
note : Il est logique que les commerçants soient
représentes par "destination" car ils ont la destination de la
transaction, l'origine en étant le client .
- En taille : j'ai aussi placé le champ [destination-origine], afin d'accentuer la visibilité des commerçants.
Maintenant, nous devons tracer les lignes représentant
les transactions entre nos clients et les commerçants.
Pour ce faire, nous allons dupliquer l'axe y en
ajoutant une deuxième fois y dans les lignes.
- Chemin : [path id]= STR([Id Customer])+"-"+STR([Id Merchant])
- details : [customer] and [merchant]
- taille : montant des transactions [amount] pour noircir un peu les lignes
Comment faire le graphique de droite ?
Ce graphique est beaucoup plus facile à construire que
le précédent ; il représente la distribution de la clientèle pour chacun des
commerçants. Ainsi, nous pouvons déterminer la santé de leur activité
commerciale, et si leur activité dépend d un nombre large ou restreint de
clients fidèles .
Parce que j'ai multiplié par deux mes lignes pour
construire ma visualisation précédente, je dois faire attention que cela ne
crée pas de problème lors de certains calculs. Si on veut calculer le montant
total des transactions par clients, en se servant de la data source telle
quelle, on devra ainsi la calculer :
transaction
montant = if [Origin Destination]="destination" then [Amount] ELSE 0
END
Ligne : [merchants]
Colonne : [transaction montant]
Détails : [customer id]
Afin de pouvoir distinguer un peu mieux les données
concentrées, j'ai ajouté un champs en ligne [random()], et vous obtenez cette
visualisation.
Références : Vous avez de merveilleux blogs sur
internet en anglais, dont voici deux exemples :
how to do a radar chart by
Jonathan Trajkovic
how to do a radial bar
chart by Kevin Flerlage
Un de mes auteurs favoris et un génie de la trigonométrie : Ludovic Tavernier