Comment faire un diagramme circulaire


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)
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

Faites attention comme toujours aux tooltips :)


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]

Mark : je choisis densité




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


Un de mes auteurs favoris et un génie de la trigonométrie : Ludovic Tavernier