Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Tue 18 April 2017 13:59

chanteclair
Participant assidu
Lieu: Pau
Date d'inscription: 3 Jan 2007
Messages: 713

QGIS: Etiquetage portions diagramme en camembert

Bonjour,
Sauf erreur de ma part, pas de nouveauté dans Qgis 2.18.6 concernant la possibilité d'étiquetage des portions d'un diagramme en camembert (avec leurs pourcentages par exemple).
Attention ! Il ne s'agit en aucun cas d'un reproche, le travail réalisé par les différents développeurs/contributeurs étant remarquable en tout point.
Pourriez-vous me dire quelle astuces vous utilisez pour étiqueter les différentes portions d'un diagramme en camembert svp ? Je penche pour mon projet en cours à créer des étiquettes directement dans le composeur d'impression, plutôt que de dupliquer x fois la couche source.
Merci de vos retours.
Bonne journée.

Hors ligne

 

#2 Thu 20 April 2017 12:51

Benoit91
Participant assidu
Date d'inscription: 2 Oct 2008
Messages: 263

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour

Créer des étiquettes dans le composeur d'impression peut être assez fastidieux si vous avez beaucoup de diagrammes et un peu moins "flexible" si vous modifiez l'échelle d'impression ou mise à jour de vos données.

Pour ma part, j'applique une représentation en diagramme camembert sur la couche d'origine, à laquelle j'ajoute les champs label_x et label_y (ou je fais une copie en fonction du besoin) et je duplique la couche.
Je lui applique une représentation diagramme texte avec position du diagramme selon les champs label_x et label_y.

Via l'outil de déplacement des étiquettes (mise à jour des champs label_x et label_y) je déplace les diagrammes texte aux endroits souhaités.
(remarque: pour déplacer facilement les "étiquettes" il ne faut pas décocher la couche mère, ne pas la rendre visible, ceci est valable pour le 1er déplacement car je pense que l'outil a du mal avec les couches dupliquée qui se superposent )

Ensuite on peut finir en dupliquant une seconde fois la couche d'origine et y appliquer une symbologie avec le générateur de géométrie pour construire une ligne entre le diagramme texte et le diagramme camembert lorsque le lien n'est pas évident.

expression dans le générateur de géométrie:

Code:

make_line(centroid( $geometry ),make_point("label_x","label_y"))

Cordialement.

Dernière modification par Benoit91 (Thu 20 April 2017 12:52)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#3 Thu 20 April 2017 13:17

chanteclair
Participant assidu
Lieu: Pau
Date d'inscription: 3 Jan 2007
Messages: 713

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour Benoit91,
Merci pour votre réponse. Je n'avais pas pensé à cette méthode.
Je vais tester !
Merci.

Hors ligne

 

#4 Mon 31 July 2017 13:12

Ferraton
Participant actif
Date d'inscription: 13 Sep 2005
Messages: 104

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour,

A tester...
http://www.geoinformations.developpemen … a3526.html

Merci pour les retours...

Hors ligne

 

#5 Mon 04 December 2017 16:00

legrange29170
Participant occasionnel
Date d'inscription: 6 Sep 2012
Messages: 10

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour,

Je viens de tester le lien de Ferraton (ci-dessus) pour l'étiquetage de camemberts. j'ai adapté l'expression en fonction de mes champs et j'ai visiblement une erreur de syntaxe  (expression non valide: --> Erreur d'analyse : syntax error, unexpected '(', expecting COMMA or ')')...:

Voici mon expression :

Make_Line(
make_point(
CentroidX() +
(sqrt(("_controles"/ maximum( "_controles" )))*2000/2)
* cos(pi()/2+pi()* ("_controles" / ("_controles" + "_non controles"))) ,
CentroidY()+
(sqrt(("_controles"/ maximum( "_controles" )))*2000/2)
* sin(pi()/2+pi()* ("_controles" / ("_controles" + "_non controles"))) ),
make_point(
CentroidX() +
((sqrt(("_controles"/ maximum( "_controles" )))*2000/2)+200)
* cos(pi()/2+pi()* ("_controles" / ("_controles" + "_non controles"))) ,
CentroidY()+
((sqrt(("_controles"/ maximum( "_controles" )))*2000/2)+200)
* sin(pi()/2+pi()* ("_controles" / ("_controles" + "_non controles"))) )
)


Est-ce que l'un(e) d'entre vous à réussi à réaliser cet exercice? Savez-vous comment résoudre mon problème? Merci d'avance

Hors ligne

 

#6 Mon 04 December 2017 16:31

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour,
Le message d'erreur dit que vous avez une parenthèse ouvrante de trop, alors qu'il faudrait une virgule ou une parenthèse fermante.
Regardez donc posément si toutes vos paires de parenthèses sont bien là.

Hors ligne

 

#7 Wed 06 December 2017 08:50

legrange29170
Participant occasionnel
Date d'inscription: 6 Sep 2012
Messages: 10

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour,

Le nombre et la position des parenthèses me semblent ok. Pour les virgules je ne vois pas...
Si vous avez des idées et remarques je suis preneur! Merci.

Hors ligne

 

#8 Wed 06 December 2017 13:30

MIROSLAW Christophe
Participant occasionnel
Lieu: Lieusaint
Date d'inscription: 5 Jul 2014
Messages: 37

Re: QGIS: Etiquetage portions diagramme en camembert

legrange29170 a écrit:

Bonjour,

Je viens de tester le lien de Ferraton (ci-dessus) pour l'étiquetage de camemberts. j'ai adapté l'expression en fonction de mes champs et j'ai visiblement une erreur de syntaxe  (expression non valide: --> Erreur d'analyse : syntax error, unexpected '(', expecting COMMA or ')')...:

Voici mon expression :

Make_Line(
make_point(
CentroidX() +
(sqrt(("_controles"/ maximum( "_controles" )))*2000/2)
* cos(pi()/2+pi()* ("_controles" / ("_controles" + "_non controles"))) ,
CentroidY()+
(sqrt(("_controles"/ maximum( "_controles" )))*2000/2)
* sin(pi()/2+pi()* ("_controles" / ("_controles" + "_non controles"))) ),
make_point(
CentroidX() +
((sqrt(("_controles"/ maximum( "_controles" )))*2000/2)+200)
* cos(pi()/2+pi()* ("_controles" / ("_controles" + "_non controles"))) ,
CentroidY()+
((sqrt(("_controles"/ maximum( "_controles" )))*2000/2)+200)
* sin(pi()/2+pi()* ("_controles" / ("_controles" + "_non controles"))) )
)


Est-ce que l'un(e) d'entre vous à réussi à réaliser cet exercice? Savez-vous comment résoudre mon problème? Merci d'avance


A priori 2 parenthèses ouvrantes en trop dans le second argument de Make_Line (surligné en gras)

Hors ligne

 

#9 Wed 24 January 2018 11:52

MP911
Participant occasionnel
Date d'inscription: 4 May 2017
Messages: 26

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour,

J'ai le même problème avec ma carte, le message d'erreur qui s'affiche est celui-ci:

Erreur d'analyse:
syntax error, unexpected '(', expecting COMMA or ')'

Erreur d'évaluation:
Pas de nœud racine !


Voici ce que j'ai écrit dans la générateur de géométrie :

Make_Line(
make_point(
CentroidX() +
(sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)
* cos(pi()/2+pi()* ( "salaries_activites_n1_pcp"  / ( "salaries_activites_n1_pcp"  +  "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti" ))) , 
CentroidY()+
(sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp" )))*2000/2)
* sin(pi()/2+pi()* ( "salaries_activites_n1_pcp"  / ( "salaries_activites_n1_pcp"  + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) ),
make_point(
CentroidX() +
((sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)+200)
* cos(pi()/2+pi()* ( "salaries_activites_n1_pcp" / ( "salaries_activites_n1_pcp" + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) , 
CentroidY()+
((sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)+200)
* sin(pi()/2+pi()* ( "salaries_activites_n1_pcp" / ( "salaries_activites_n1_pcp" + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) )
)


Par ailleurs, ma géométrie sont des polygones et non des lignes?

Est-ce que vous avez trouvez une solution à cela?

Merci beaucoup!

Hors ligne

 

#10 Fri 26 January 2018 12:29

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour,

MP911 a écrit:

Bonjour,

J'ai le même problème avec ma carte, le message d'erreur qui s'affiche est celui-ci:

Erreur d'analyse:
syntax error, unexpected '(', expecting COMMA or ')'

Erreur d'évaluation:
Pas de nœud racine !


Effectivement, vous avez le même problème que reporté ci-dessus et par conséquent l'explication/la solution évoquée plus haut devrait pouvoir s'appliquer et vous aider à corriger ce problème de syntaxe. L'avez-vous testée? Les parenthèses, les virgules sont-elles placées au bon endroit?
Pour info, j'ai essayé de jeter un coup d’œil à votre formule mais désolé ai abandonné; je trouve que vous abusez des parenthèses (genre doubler des parenthèses alors que les opérations sont typiquement multiplication et division), ce qui rend illisible voire moins prédictible la portion de formule pour un lecteur lambda.
Allégez la formule, aérez la sur plusieurs lignes (avec indentation?), genre avec un bon éditeur de texte, et surement vous y verrez plus clair.

Hors ligne

 

#11 Fri 26 January 2018 14:38

MIROSLAW Christophe
Participant occasionnel
Lieu: Lieusaint
Date d'inscription: 5 Jul 2014
Messages: 37

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour,

Les parenthèses problématiques sont à priori toujours les mêmes (en gras).
Mais suivez le conseil de Santanna (utilisez notepad++ pour vérification), cela sera plus convivial et on pourra vous aider plus rapidement une prochaine fois.

MP911 a écrit:

Bonjour,

J'ai le même problème avec ma carte, le message d'erreur qui s'affiche est celui-ci:

Erreur d'analyse:
syntax error, unexpected '(', expecting COMMA or ')'

Erreur d'évaluation:
Pas de nœud racine !


Voici ce que j'ai écrit dans la générateur de géométrie :

Make_Line(
make_point(
CentroidX() +
(sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)
* cos(pi()/2+pi()* ( "salaries_activites_n1_pcp"  / ( "salaries_activites_n1_pcp"  +  "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti" ))) , 
CentroidY()+
(sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp" )))*2000/2)
* sin(pi()/2+pi()* ( "salaries_activites_n1_pcp"  / ( "salaries_activites_n1_pcp"  + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) ),
make_point(
CentroidX() +
((sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)+200)
* cos(pi()/2+pi()* ( "salaries_activites_n1_pcp" / ( "salaries_activites_n1_pcp" + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) , 
CentroidY()+
((sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)+200)
* sin(pi()/2+pi()* ( "salaries_activites_n1_pcp" / ( "salaries_activites_n1_pcp" + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) )
)


Par ailleurs, ma géométrie sont des polygones et non des lignes?

Est-ce que vous avez trouvez une solution à cela?

Merci beaucoup!


Cordialement

Hors ligne

 

#12 Tue 22 February 2022 14:48

mjx
Juste Inscrit !
Date d'inscription: 21 Feb 2022
Messages: 2

Re: QGIS: Etiquetage portions diagramme en camembert

Bonjour,
Je cherche aussi à étiqueter des portions d'un diagramme en camembert (taille fixe), mais j'ai le même message d'erreur ... avez-vous résolu le problème ?
Merci

Code:

Make_Line(
make_point(
    CentroidX() +
    (sqrt(("log_3"/ maximum( "log_3" )))*2000/2)
    * cos(pi()/2+pi()* ("log_3" / ("log_tot"))) ,  
    CentroidY()+
    (sqrt(("log_3"/ maximum( "log_3" )))*2000/2)
    * sin(pi()/2+pi()* ("log_3" / ("tot_log"))) ),
make_point(
    CentroidX() +
    ((sqrt(("log_3"/ maximum( "log_3" )))*2000/2)+200)
    * cos(pi()/2+pi()* ("log_3" / ("tot_log"))) ,  
    CentroidY()+
    ((sqrt(("log_3"/ maximum( "log_3" )))*2000/2)+200)
    * sin(pi()/2+pi()* ("log_3" / ("tot_log"))) )
)

Dernière modification par mjx (Tue 22 February 2022 15:52)

Hors ligne

 

#13 Wed 23 February 2022 23:15

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS: Etiquetage portions diagramme en camembert

Bonsoir,

Je cherche aussi à étiqueter des portions d'un diagramme en camembert (taille fixe), mais j'ai le même message d'erreur


Et quel est ce message d'erreur? Mais comme j'ai dû lire la discussion pour savoir de quoi il pourrait s'agir, je me permets de vous demander si vous avez appliqué les différentes suggestions évoquées dans le fil pour essayer de trouver là où ça pouvait coincer?

Hors ligne

 

Pied de page des forums

Powered by FluxBB