[pstricks] Dégradé dans un diagramme en barres

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

[pstricks] Dégradé dans un diagramme en barres

Messagepar agnès » Mardi 21 Janvier 2014, 11:11

Bonjour, j'ai fait un diagramme en barres avec pst-bar et je voudrais colorier chaque barre avec un dégradé, mais pst-grad colorie le graphique en entier.
Quelqu'un a-t-il déjà été confronté au problème ?
Code: Tout sélectionner
\documentclass{article}
\pagestyle{empty}
 
\usepackage{pstricks,pst-bar,pst-grad}
\begin{document}
 
\savedata{\dataOne}[{{15,3},{25,5},{35,6},
{45,4},{55,3}}]
\psset{xunit=.1cm,yunit=0.5cm}
\begin{pspicture}(-1.5,-1)(7,7)
\psaxes[axesstyle=none,ticks=none,labels=x,Dx=10,Ox=125]{-}(0,0)(0,-1)(60,15)
\dataplot[plotstyle=bar,barwidth=1]{\dataOne}
\rput(15,3.5){$ 3 $}
\rput(25,5.5){$ 5 $}
\rput(35,6.5){$ 6 $}
\rput(45,4.5){$ 4 $}
\rput(55,3.5){$ 3 $}
\end{pspicture}
\end{document}
Dernière édition par agnès le Samedi 25 Janvier 2014, 11:33, édité 2 fois.
agnès
Kilo-utilisateur
 
Messages: 160
Inscription: Dimanche 23 Août 2009, 19:52
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar kojak » Mardi 21 Janvier 2014, 15:51

Bonjour,

Moi, je n'ai aucune couleur sur le pdf. Mais avec ça, j'en ai

 
Code: Tout sélectionner
\dataplot[plotstyle=bar,barwidth=1,fillstyle = gradient , gradbegin=orange , gradend =blue]{\dataOne}
pas d'aide par MP
kojak
Modérateur
 
Messages: 10397
Inscription: Samedi 18 Novembre 2006, 19:50
Statut actuel: Actif et salarié | Enseignant

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar agnès » Mercredi 22 Janvier 2014, 21:59

Bonjour,
oui, mais cela donne un dégradé sur l'ensemble de la figure ; moi j'aurais aimé que le dégradé recommence à chaque barre.
Je vais laisser tomber.
Merci
agnès
Kilo-utilisateur
 
Messages: 160
Inscription: Dimanche 23 Août 2009, 19:52
Statut actuel: Actif et salarié | Enseignant

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar balf » Jeudi 23 Janvier 2014, 03:02

En utilisant des commandes de pst-bar, vous pouvez obtenir un dégradé :
barchart.png
barchart.png (2.09 Kio) Vu 1380 fois


Voici le code :
Code: Tout sélectionner
\documentclass{article}
\pagestyle{empty}

\usepackage{pstricks,pst-bar,pst-grad}

\newpsbarstyle{gr-red}{gradbegin = red, gradmidpoint = 0.1,gradend = white,  fillstyle=gradient , framearc =0}

\begin{document}
\psset{xunit=1.25cm,yunit=0.5cm, }
\begin{pspicture}(-1.5,-1)(7,7)%
\readpsbardata{\data}{databarchart.csv}%
\psset{barsep = 0, barcolsep = 0.2 ,barstyle = gr-red}%
\psbarchart{\data}%%
\uput[u](0.5,3){$ 3 $}
\uput[u](1.5,5){$ 5 $}
\uput[u](2.5,6){$ 6 $}
\uput[u](3.5,4){$ 4 $}
\uput[u](4.5,3){$ 3 $}
\end{pspicture}
\end{document}


À quoi il faut ajouter les données sous forme d'un fichier csv mentionné dans le code et dont voici le contenu :
Code: Tout sélectionner
15,25,35,45,55
3,5,6,4,3


Le principal problème est qu'on ne peut obtenir un vrai histogramme (ça crée des lignes d'épaisseur double à la frontière entre deux rectangles). D'autre part, je n'ai pas bien compris pourquoi les données 15, 25 ,…, correspondent dans votre code à Ox = 125 et Dx =10. Mais ce que vous voulez obtenir n'est pas très clair (hormis le dégradé).

Je ne sais donc pas si c'est très loin de ce que vous souhaitez, mais en tout cas on peut obtenir simplement un dégradé sans avoir à tracer tous les rectangles à la main.

B.A.
balf
Zetta-utilisateur
 
Messages: 3812
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar agnès » Vendredi 24 Janvier 2014, 09:39

Bonjour et merci.
En effet le dégradé donne ce que je veux avec la ligne
Code: Tout sélectionner
    \newpsbarstyle{gr-red}{gradangle=90,gradbegin = gray, gradmidpoint = 0.5,gradend = white,  fillstyle=gradient, framearc =0}

je voulais un histogramme ; je n'ai pas essayé à l'impression mais en ajoutant linewidth=0 dans psset ça peut peut-être marcher.
hist2.png
hist2.png (5.37 Kio) Vu 1348 fois

Mon souci maintenant est avec la graduation : les données sont en fait [135,145[, [145,155[, etc.
hist1.png
hist1.png (5.28 Kio) Vu 1348 fois

Je ne suis jamais arrivée à paramétrer correctement psaxes pour commencer à 135 c'est pourquoi j'avais changé les données. Je peux recoller un axe comme je l'avais fait mais je ne vois pas comment supprimer l'étiquette des données avec pstbar.
agnès
Kilo-utilisateur
 
Messages: 160
Inscription: Dimanche 23 Août 2009, 19:52
Statut actuel: Actif et salarié | Enseignant

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar agnès » Vendredi 24 Janvier 2014, 09:53

Ah ben j'ai trouvé.
J'ai simplement supprimé la première ligne du fichier csv.
agnès
Kilo-utilisateur
 
Messages: 160
Inscription: Dimanche 23 Août 2009, 19:52
Statut actuel: Actif et salarié | Enseignant

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar balf » Vendredi 24 Janvier 2014, 18:31

Je pense que ce code donne un résultat proche de ce que vous voulez :
Code: Tout sélectionner
\documentclass{article}
\pagestyle{empty}

\usepackage{pstricks,pst-bar,pst-grad}
\usepackage{csvsimple}

\newpsbarstyle{gr-red}{gradbegin = red, gradmidpoint = 0.5,gradend = red!25!white, gradangle = 90, fillstyle=gradient , framearc =0}

\begin{document}

\savedata{\dataOne}[{{135,3},{145,5},{155,6},{165,4},{175,3}}]
\psset{yunit=0.5cm, }%
\begin{pspicture}(-1.5,-1)(7,7)%
\readpsbardata[header = false]{\data}{databarchart1.csv}%
{\psset{barsep = 0, barcolsep = 0 ,barstyle = gr-red, linestyle = none}%
\psbarchart{\data}}%%
\uput[u](0.5,3){$ 3 $}
\uput[u](1.5,5){$ 5 $}
\uput[u](2.5,6){$ 6 $}
\uput[u](3.5,4){$ 4 $}
\uput[u](4.5,3){$ 3 $}
\psset{linecolor=blue}
\psaxes[Ox = 135,Dx = 10,dx = 1,ticks = none, labels = x](0,0)(5,0)
\psline(1,0)(0,0)(0,1) %% cette ligne devrait être inutile
\psset{origin = {-13,0}, xunit = 0.1cm}
\dataplot[plotstyle=bar,barwidth=1]{\data}%One
\end{pspicture}

\end{document}


Cela dit je ne suis pas totalement satisfait du code, d'abord à cause de la ligne inutile (c'est tout ce que j'ai trouvé pour éviter un mauvais raccord des lignes à l'origine). Ensuite parce qu'on utilise en fin de compte 2 fichiers de données : le .csv externe, et un fichier écrit en clair dans le code-source comme argument de la commande \savedata. À mon avis, on devrait pouvoir extraire les 2 fichiers utiles d'un unique fichier .csv, puisqu'il existe des outils de manipulation des données en latex. Mais je n'ai pas réussi à voir si, ni a fortiori comment, d'un fichier contenant sur chaque ligne la liste des couples tels que 135,3, on pouvait fabriquer un argument accepté par la commande \savedata.

B.A.
Fichiers joints
pst-histog.png
balf
Zetta-utilisateur
 
Messages: 3812
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar agnès » Samedi 25 Janvier 2014, 11:29

Bonjour et merci,
je ne comprends pas à quoi sert ici le savedata puisque je ne vois pas d'autre utilisation du dataOne ? je pensais que l'utilisation de pst-grad imposait de recourir à un csv, mais que du coup on pouvait se passer de savedata. Je ne connaissais pas l'argument [header = false], j'avais résolu le problème en supprimant la ligne. Je mets ici le code auquel j'étais parvenue, qui est assez similaire, et qui utilise un csv externe.
Code: Tout sélectionner
\documentclass{article}
\pagestyle{empty}
\usepackage{pstricks,pst-bar,pst-grad}
\begin{filecontents*}{data1.csv}
3,5,6,4,3
\end{filecontents*}
\begin{document}
    \newpsbarstyle{gr-red}{gradangle=90,gradbegin = gray, gradmidpoint = 0.5,gradend = white,  fillstyle=gradient, framearc =0}
     \psset{xunit=.1cm,yunit=0.5cm}
    \begin{pspicture}(-1.5,-1)(7,7)%
 \psaxes[axesstyle=none,ticks=none,labels=x,Dx=10,Ox=135]{-}(0,0)(50,15)
   \psset{xunit=1cm}
  \readpsbardata{\data}{data1.csv}%
    \psset{barsep =0 , barcolsep = 0,linewidth=0 ,barstyle = gr-red}%
  \psbarchart{\data}%%
    \uput[u](0.5,3){$ 3 $}
    \uput[u](1.5,5){$ 5 $}
    \uput[u](2.5,6){$ 6 $}
    \uput[u](3.5,4){$ 4 $}
    \uput[u](4.5,3){$ 3 $}
    \end{pspicture}
\end{document} 

et le résultat
hist3.png
hist3.png (2.46 Kio) Vu 1274 fois
qui est tout à fait ce que je voulais.
agnès
Kilo-utilisateur
 
Messages: 160
Inscription: Dimanche 23 Août 2009, 19:52
Statut actuel: Actif et salarié | Enseignant

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar balf » Samedi 25 Janvier 2014, 15:27

La commande \savedata sert à pouvoir utiliser \dataplot, qui donne l'histogramme (« non rempli ») : je suis obligé d'utiliser \psbarchart avec linestyle=none, parce que, sinon, lorsque deux rectangles sont contigus, la partie commune du contour a une épaisseur double (les contours des rectangles sont juxtaposés au lieu de se chevaucher). Ça se voit très bien en utilisant la loupe de gsview sous windows. D'où l'idée de faire l'histogramme en deux temps : le remplissage sans les contours avec \psbarchart, qui permet d'avoir le dégradé, puis les contours avec \dataplot (qui ne permet pas un dégradé rectangle par rectangle).
Maintenant, peut-être faudrait-il demander à Herbert Voss de prévoir dans pst-bar de quoi tracer des histogrammes qui permettrait d'éviter ce chevauchement des contour tout en continuant d'assurer des traitements (dégradés et autres) rectangle par rectangle — et aussi de permettre d'ajouter les valeurs au-dessus de chaque rectangle, en plus de la légende au-dessous.


Cela dit, j'arrive bien à compiler votre code et à passer dvips dessus, mais l'affichage de gsview me renvoie un message d'erreur — auquel je ne comprends rien, bien entendu. Et impossible d'afficher.

Pour finir : vous n'avez pas osé rebaptiser le style gr-red en gris-gris ? :)

B.A.
Dernière édition par balf le Dimanche 26 Janvier 2014, 12:53, édité 1 fois.
balf
Zetta-utilisateur
 
Messages: 3812
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: [pstricks] Dégradé dans un diagramme en barres

Messagepar agnès » Dimanche 26 Janvier 2014, 11:57

Merci, je comprends mieux.
agnès
Kilo-utilisateur
 
Messages: 160
Inscription: Dimanche 23 Août 2009, 19:52
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Proximic [Spider] et 22 invités