La réalité d'un bête graphique, réalisé avec TikZ, pose un problème : les dates (des années) apparaissent sous une forme décimale (2,020, par exemple). J'ai tenté de les indiquer sous la forme 2020-01-01, mais la composition ne se fait pas. Autre tentative (aussi vaine) : utiliser les options date coordinates in=x,xticklabel={\year}.

Voici le fichier data2.txt utilisé ici (et placé dans le même répertoire) :

Ouvrir dans l'éditeur Overleaf
Date    Precip
2000    500
2001    400
2002    600
2003    300
2004    1000
2005    700
2006    500
2007    400

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{pgfplots}
%\usepgfplotslibrary{dateplot}. Semble ne pas être accepté
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
extra x ticks=0,
grid=major,]
\addplot
table[x=Date,y=Precip]{data2.txt};
\end{axis}
\end{tikzpicture}
\end{document}

Posée 02 Jan, 15:10

fred02840's gravatar image

fred02840
3.0k3990
Taux d'acceptation : 11%

Modifiée 02 Jan, 18:10

Pathe's gravatar image

Pathe ♦♦
5.9k378176


Voir par exemple la page 84 de la doc de pgfplots : x tick label style={/pgf/number format/1000 sep=} ou tick label style={/pgf/number format/1000 sep=}.

Ouvrir dans l'éditeur Overleaf
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{pgfplots}
%\usepgfplotslibrary{dateplot}. Semble ne pas être accepté
\begin{filecontents}{data2.txt}
Date    Precip
2000    500
2001    400
2002    600
2003    300
2004    1000
2005    700
2006    500
2007    400
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
extra x ticks=0,
tick label style={/pgf/number format/1000 sep=},
grid=major,]
\addplot
table[x=Date,y=Precip]{data2.txt};
\end{axis}
\end{tikzpicture}
\end{document}
Lien permanent

Publiée 02 Jan, 18:51

touhami's gravatar image

touhami
7.6k28
Taux d'acceptation : 56%

Modifiée 02 Jan, 18:54

@touhami. Cela suppose donc de copier-coller les données, n'est-ce pas ?

(02 Jan, 19:44) fred02840 fred02840's gravatar image

@touhami. Dans Overleaf, aucun problème (y compris avec l'ensemble de mon fichier .tex). Dans TeXStudio, un paquet d'erreurs :

! Package pgfplots Error: Sorry, could not retrieve column 'Precip' from table '\\pgfplotstableread@filename@@table@name '. Please check spelling (or introduc e name aliases)..

! Package pgfplots Error: Sorry, the requested column number '' in table 'data2 .txt' does not exist!? Please verify you used the correct index 0 <= i < N..

(02 Jan, 19:51) fred02840 fred02840's gravatar image

/pgf/number format/1000 sep=<SEP> signifier que <SEP> est utiliser comme séparateur des milliers. Avec /pgf/number format/1000 sep= pas de séparateurs.

Si vous tapez table[x=Date,y=Precip]{data2.txt}, il faut alors assurer que la première ligne de votre fichier data2.txt est bien Date Precip.

(02 Jan, 21:02) touhami touhami's gravatar image

@touhami. Bizarre : les deux colonnes ont bien ces en-têtes…

(02 Jan, 23:35) fred02840 fred02840's gravatar image

Trouvé, grâce à TikZ pour l'impatient, p. 75 et suiv. (premier réflexe à avoir). La méthode est un tantinet complexe :

  • division des valeurs des précipitations par 100 — sinon le graphique explose complètement le cadre de la feuille A4, puisqu'on travaille avec un pas d'un centimètre ;
  • soustraction de 2000 aux années — même raison, a fortiori ;
  • formulation de nouvelles étiquettes pour les deux axes), mais elle donne les résultats escomptés.

J'ai pris le parti de mettre des commentaires dans le corps de l'ECM pour que l'on puisse comprendre ce qui se passe. Évidemment, s'il y a moyen de faire plus simple, je prends…

Ouvrir dans l'éditeur Overleaf
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
% Rapatriement des données     
     \draw plot file {data2.txt};

% Étalonnement de la grille : x entre 0 et 7 ; y entre 3 et 10. On se rappelle qu'on n'a gardé qu'on a enlevé 2000 aux années, et divisé les valeurs par 100
     \draw (0,3) grid (7,10);

% Étiquetage de l'axe des ord.
     \foreach \y in {4,6,...,10}
     \draw (0,\y) node[left]{\y00}; % oui : \y00, car j'ai dû diviser les valeurs des précipitations par 100. Ça suit toujours ?

% Étiquetage de l'axe des abs.
     \foreach \x in {2000,2002,...,2006}
     \draw (\x-2000,3) node [below] {\x};

 \end{tikzpicture}

\end{document}
Lien permanent

Publiée 02 Jan, 16:15

fred02840's gravatar image

fred02840
3.0k3990
Taux d'acceptation : 11%

Modifiée 02 Jan, 18:11

Pathe's gravatar image

Pathe ♦♦
5.9k378176

Je vois ce qui me manque : travailler avec l'environnement axis, ce qui me permettrait d'avoir un titre, des flèches aux axes. Mais je retombe sur le problème de l'étiquetage des axes. Rhââgn !

(02 Jan, 16:47) fred02840 fred02840's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.

Mots-clés de la question :

×69
×7
×2

Question posée : 02 Jan, 15:10

Question vue : 635 fois

Dernière mise à jour : 02 Jan, 23:35