Connaître les dimensions d'un tikzpicture avec pgfplots

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
novice-x
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : vendredi 07 octobre 2022, 09:19
Statut actuel : Étudiant

Connaître les dimensions d'un tikzpicture avec pgfplots

Message non lu par novice-x »

Bonjour,
J'utilise PGFPLOTS et j'aimerais connaître les dimensions exactes utilisées par le tikzpicture pour afficher l'ensemble d'un graphique créé avec PGFPLOTS.
Dans la documentation, il est indiqué que les dimensions par défaut sont 240x207 points, avec 45pt pour afficher le nom des axes et leurs étiquettes.
Voici mon exemple très basique :

Code : Tout sélectionner

\begin{tikzpicture}
	\draw[<->](-45pt,3)--(240pt,3);
	\draw[<->](4,-45pt)--(4,207pt-45pt);
	\begin{axis}[ylabel=Valeur Y,xlabel=Valeur X]
		\addplot coordinates{(0,6)(4,2)(7,5)(10,3)};
	\end{axis}
\end{tikzpicture}
Mais si j'affiche des traits avec ces dimensions, cela ne correspond pas : la largeur est très légèrement plus grande, mais la hauteur est vraiment plus grande.

Qu'en est-il ?

Merci de votre aide
Pièces jointes
exemple.png
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2834
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Connaître les dimensions d'un tikzpicture avec pgfplots

Message non lu par gigiair »

Je n'y connais rien sur ce sujet, mais ce fil sur tex.stackexchange.com me semble répondre à ta question.
Voilà l'ECM que je propose en pompant honteusement la réponse qui est donnée.

Code : Tout sélectionner

%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
\documentclass{article}
\usepackage{tikz,pgfplots}
\show\pgfextractx

\newlength{\mywidth}
\newlength{\myheight}

% computes width and height of tikzpicture
\makeatletter
\newcommand{\pgfsize}[2]{ % #1 = width, #2 = height
 \pgfextractx{\@tempdima}{\pgfpointdiff{\pgfpointanchor{current bounding box}{south west}}
 {\pgfpointanchor{current bounding box}{north east}}}
 \global#1=\@tempdima
 \pgfextracty{\@tempdima}{\pgfpointdiff{\pgfpointanchor{current bounding box}{south west}}
 {\pgfpointanchor{current bounding box}{north east}}}
 \global#2=\@tempdima
}
\makeatother

\begin{document}

\begin{tikzpicture}
        \draw[<->](-45pt,3)--(240pt,3);
        \draw[<->](4,-45pt)--(4,207pt-45pt);
        \begin{axis}[ylabel=Valeur Y,xlabel=Valeur X]
                \addplot coordinates{(0,6)(4,2)(7,5)(10,3)};
              \end{axis}
            
\pgfsize{\mywidth}{\myheight}
\end{tikzpicture}


\noindent
Width = \the\mywidth \\
Height = \the\myheight
\end{document}
%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
tikzsize.png
JJR.
LaTeXien migrateur.
novice-x
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : vendredi 07 octobre 2022, 09:19
Statut actuel : Étudiant

Re: Connaître les dimensions d'un tikzpicture avec pgfplots

Message non lu par novice-x »

Merci gigiair pour ta réponse,

Pour ma part la ligne \show\pgfextractx provoque une erreur et si je la passe en commentaire, cela fonctionne bien.

Mais le principal est que j'obtiens bien la hauteur et la largeur du tikzpicture, même si je ne comprends pas grand chose au code...
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2834
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Connaître les dimensions d'un tikzpicture avec pgfplots

Message non lu par gigiair »

Il est curieux que la commande

Code : Tout sélectionner

\show\pgfextractx
provoque une erreur, car le code qui suit fait appel à cette commande, qui est donc reconnue. Visiblement, \\pgfextractx est la fonction qui permet d'accéder aux paramètres d'une figure générée par tikz. De toute façon, \\show ne fait qu'afficher dans le log la définition de \\pgfextractx, ce qui n'a pas un énorme intérêt, c'est un euphémisme. J'ai recopié à peu près verbatim le code que j'ai pompé sans chercher à l'analyser en profondeur.

Code : Tout sélectionner

> \pgfextractx=macro:
#1#2->\pgf@process {#2}#1=\pgf@x \relax .
l.6 \show\pgfextractx
Si la réponse convient, il faut reprendre le premier message du fil et d'activer la coche pour le signaler comme résolu.
JJR.
LaTeXien migrateur.