Graphique de type Radar (toile d'araignée)

Présentation
Voici un code MATLAB qui permet d'obtenir une représentation graphique de données de type radar (comme avec Excel)

Vous pouvez utiliser librement ce code dans vos travaux (voir le fichier licence.txt).

Je serais néanmoins curieux de savoir comment vous l'utilisez.

N'hésitez pas à me contacter et à me faire parvenir une capture de vos graphiques.

Merci
Téléchargement
Compatibilité
Linux Mac Windows
2  0 
Téléchargé 209 fois Voir les 12 commentaires
Détails
Catégories : Graphiques
Avatar de Jérôme Briot
Rédacteur / Modérateur
Voir tous les téléchargements de l'auteur
Licence : BSD
Date de mise en ligne : 27 juin 2014




Avatar de mr_samurai mr_samurai - Membre éprouvé https://www.developpez.com
le 17/03/2008 à 18:28
très joli,

marche super chez moi .
Avatar de agilles agilles - Nouveau Candidat au Club https://www.developpez.com
le 31/01/2011 à 19:26
Bonjour,

Serait-il possible de modifier le code du diagramme radar pour avoir la liberté d'échelle sur les différents axes?
Je recherche un outil qui me permettrait de faire un diagramme radar avec des échelles différentes sur les axes du type :
http://www.minefi.gouv.fr/directions...france0612.jpg

Merci
Avatar de Jerome Briot Jerome Briot - Rédacteur/Modérateur https://www.developpez.com
le 02/02/2011 à 22:52
La matrice L sert à appliquer les échelles sur les différentes directions radiales. La première colonne de L donne pour chaque direction la valeur au centre du graphique et la seconde colonne donne la valeur à la périphérie du graphique. Si la première valeur est inférieure à la seconde, les valeurs décroissent quand le rayon augmente.

La fonction renvoie les identifiants des objets graphiques pour pouvoir améliorer le rendu du tracé :
Code : Sélectionner tout
[h_patch,h_line,h_text] = radar(P,L,col,str,bg,ax)
  • h_patch(1) : fond du graphique
  • h_patch(2:end) : les courbes
  • h_line : les directions radiales
  • h_text{1:end-1} : les labels (en %)
  • h_text{end} : les étiquettes en périphérie du graphique


Les positions des textes à l'intérieur du graphique ne sont pas optimales, je dois bien l'avouer

Deux demo :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function demo_radar 
 
% DEMO 1 
P = [30 18 23 52 69 ; 20 45 38 85 34].'; 
L = [0 0 0 0 0 ; 100 100 100 100 100].'; 
color = [1 0 0 ; 0 0 1]; 
str = {'Perf' 'Rapidité' 'Communauté' 'Simplicité' 'Portabilité'}; 
bg = 'tight'; 
 
figure('numbertitle','off','name','Radar Demo 1') 
ax = axes; 
radar(P,L,color,str,bg,ax); 
 
% DEMO 2 
P = [2.3 8.8 2.7 5.9 0.1 2.7 2.9 ; 1.2 9.8 1.8 4.7 7.5 1.4 3.7].'; 
L = [-1.5 12 0 0 -4 -1.5 5 ; 3 4  3 10 12 3 0].'; 
color = [0 0.7059 0.9451 ; 0 0 1]; 
str = {'CR' 'EM' 'CO' 'IN' 'EX' 'PA' 'FP'}; 
bg = 'circle'; 
 
figure('color','w','numbertitle','off','name','Radar Demo 2') 
 
[p,h,t] = radar(P,L,color,str,bg); 
 
set(p(1),'edgecolor','none','facecolor',[1 0.9686 0.9216]) 
set(p(2:3),'linewidth',3) 
set([t{1:2}],'fontsize',8) 
legend(p(2:3),{'2006' '2005'})
(voir ci-dessous les deux graphiques obtenus)

Voilou... n'hésitez pas à donner vos remarques à propos de ce nouveau code
Avatar de kariboubou kariboubou - Nouveau membre du Club https://www.developpez.com
le 04/03/2014 à 10:44
Bonjour,
tout d'abord un grand merci pour ce code qui correspond exactement à mes besoins!
J'aimerais savoir comment faire pour modifier le type de ligne (-,--, pour les data 'PP'? De même, comment faire pour ajouter une légende pour chaque colonne de 'PP'?

Merci d'avance

Kariboubou
Avatar de Jerome Briot Jerome Briot - Rédacteur/Modérateur https://www.developpez.com
le 04/03/2014 à 11:04
Citation Envoyé par kariboubou  Voir le message
comment faire pour modifier le type de ligne (-,--, pour les data 'PP'?

Code : Sélectionner tout
1
2
[p,h,t] = radar(P,L,color,str,bg); 
set(p(2:3),'linestyle',':')
Citation Envoyé par kariboubou  Voir le message
De même, comment faire pour ajouter une légende pour chaque colonne de 'PP'?

La légende est attribuée pour chaque ligne des données d'entrée (voir la démo)
Je ne vois pas bien l'intérêt de créer une légende pour les colonnes ?
Pourrais-tu me montrer un exemple de ce que tu cherches à obtenir ?
Avatar de kariboubou kariboubou - Nouveau membre du Club https://www.developpez.com
le 04/03/2014 à 11:31
Je ne vois pas bien l'intérêt de créer une légende pour les colonnes ?

Merci pour cette réponse rapide. Je me suis trompé, ce que je souhaite c'est de mettre la légende correspondante à chaque ligne de P, en sachant que ce nombre de lignes peut varier. Comment faire quelque chose du style:
Code : Sélectionner tout
legend(PP(1:x),legende(1:x))
Idem pour le style des lignes, le nombre de ligne dans PP peut varier donc je souhaiterais attribuer un style différent par ligne, de la même façon que j'attribue une couleur différente de façon aléatoire. L'idée est de distinguer 2 courbes qui viendraient se superposer...

Merci d'avance.
Avatar de Jerome Briot Jerome Briot - Rédacteur/Modérateur https://www.developpez.com
le 04/03/2014 à 11:43
OK, je comprends mieux.

Pour différencier les lignes :

Code : Sélectionner tout
1
2
3
4
5
style = {'-' '--' ':' '-.'}; 
 
for n = 1:numel(p)-1 
    set(p(n+1), 'linestyle', style{rem(n,4)+1}); 
end
Comme il n'y a que quelques styles disponibles, il y aura des lignes avec des styles similaires.

Pour la légende :

Code : Sélectionner tout
legend(p(2:end), legende)
En supposant que legende soit un tableau de cellules contenant les textes correspondant à chaque ligne de P
Avatar de kariboubou kariboubou - Nouveau membre du Club https://www.developpez.com
le 04/03/2014 à 13:35
Super!!
Merci beaucoup pour ton aide!
Bonne journée à toi.

Kariboubou
Avatar de thecrazydonut thecrazydonut - Membre averti https://www.developpez.com
le 23/04/2015 à 21:01
Merci Dut, c'est une super contribution, intuitive et facile à utiliser !

Y a-t-il une option pour remplir les zones délimitées par les courbes ?
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique MATLAB