"Dimension too large" pour mon graphique Tikz

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.

"Dimension too large" pour mon graphique Tikz

Messagepar iznogoud » Mardi 30 Décembre 2008, 10:47

Bonjour à tous

Je suis entrain de réaliser des graphiques sur une série de points.
J'ai défini une série de variable pour modifier rapidement mon graphique (\def\Xmax{1300}) que j'utilise ensuite pour tracer des axes et ma grille.

A la compilation, c'est le drame ! "Dimension too large"

C'est un problème Latex ou Tikz ?
Il existe une solution ? (le faire tracer en mm plutôt qu'en cm)

Merci pour vos commentaires.
iznogoud
Déca-utilisateur
 
Messages: 36
Inscription: Mardi 04 Novembre 2008, 22:14
Localisation: Strasbourg
Statut actuel: Post-bac | Ecole d'ingénieur

Publicité

Re: "Dimension too large" pour mon graphique Tikz

Messagepar pg » Mardi 30 Décembre 2008, 11:05

Le problème des dimensions trop grandes est courant avec TikZ.

Il est impossible de répondre avec précision sans voir le code de ta figure, mais le problème peut venir de l'unité utilisée (\tikz \draw (0,0)--(1300,0); ne fonctionnera pas, mais \tikz \draw (0,0)--(1300mm,0); oui), mais souvent, cela vient d'un calcul intermédiaire dans lequel il y a un nombre trop grand ; dans ce cas, on peut souvent faire le calcul différemment (voir par exemple ce sujet) ou (pour un plot par exemple) en arrêtant la courbe avant que la fonction ne prenne des valeurs trop grandes (\tikz \draw[domain=0:3] plot (\x,{exp(\x*\x)}); ne fonctionnera pas, mais \tikz \draw[domain=0:2] plot (\x,{exp(\x*\x)}); oui).
pg
Modérateur
 
Messages: 2597
Inscription: Jeudi 14 Juin 2007, 23:31

Re: "Dimension too large" pour mon graphique Tikz

Messagepar iznogoud » Mardi 30 Décembre 2008, 11:21

Mon code est le suivant inclus avec un \input :
Code: Tout sélectionner
\begin{tikzpicture}[yscale=0.01,xscale=0.5]
%%Définition des limites du graph%%
\def\Xmax{10.5};
\def\Ymax{500};
\def\Xmin{0};
\def\Ymin{0};
\def\Xgrid{1};
\def\Ygrid{100};
\def\Lngmax{20};
\def\Lngmin{25};

\draw[help lines,ystep=\Ygrid,xstep=\Xgrid] (\Xmin,\Ymin) grid (\Xmax,\Ymax); %Définition grille
\begin{scope}
\foreach \x/\xtext in {\Xmin,\Xgrid,...,\Xmax}
\draw[xshift=\x cm] (0pt,1pt) -- (0pt,-1pt) node[below,fill=white] {$\xtext$};
\foreach \y/\ytext in {\Ymin,\Ygrid,...,\Ymax}
\draw[yshift=\y cm] (1pt,0pt) -- (-1pt,0pt) node[left,fill=white] {$\ytext$};
\end{scope}

\draw [->] (\Xmin,\Ymin) -> (\Xmax,\Ymin) node[right] {$t$} coordinate(x axis); %axe des X
\draw [->] (\Xmin,\Ymin) -> (\Xmin,\Ymax) node[above] {$longueur$} coordinate(y axis); %axe des y
\begin{scope}[red,very thick] % Lng Cardan
\pgfplothandlerlineto
\pgfplotxyfile{C2-beta/E-tableau/b21/pliage_lng}
\pgfusepath{stroke}
\end{scope}

\begin{scope}[purple,very thick] % Limite Lng Cardan
\draw [-] (0,\Lngmax) -- (\Xmax,\Lngmax);
\draw [-] (0,\Lngmin) -- (\Xmax,\Lngmin);
\end{scope}

\end{tikzpicture}


Et le fichier de points à lire est le suivant (nom du fichier : pliage_lng) :
Code: Tout sélectionner
0   897.37
1   902
2   907.74
3   914.48
4   922.14
5   930.64
6   1051.51
7   1152.35
8   1229.51
9   1280.38
10   1303.34


Contourner le pb avec les unités est-il possible ? (lui faire lire des mm plus tot que des cm) ?
Je vais travailler le code tikz qui est proposé dans ton exemple (encore newbie avec Tikz...)
iznogoud
Déca-utilisateur
 
Messages: 36
Inscription: Mardi 04 Novembre 2008, 22:14
Localisation: Strasbourg
Statut actuel: Post-bac | Ecole d'ingénieur

Re: "Dimension too large" pour mon graphique Tikz

Messagepar pg » Mardi 30 Décembre 2008, 12:01

Ici, c'est bien un problème d'unités et d'échelles. Je ne sais pas comment tu veux que le résultat ressemble, mais voici une possibilité.

plot.png


Code: Tout sélectionner
\documentclass{article}

\usepackage{tikz}
\usepackage{xlop}

\makeatletter
\newcommand{\printresult}[1]{\pgfmathparse{#1}\let\temp@printresult\pgfmathresult\opcopy{\temp@printresult}{a}\opunzero{a}$\opprint{a}$}
\makeatother

\begin{document}

\begin{tikzpicture}[yscale=1,xscale=1]
%%Définition des limites du graph%%
\def\Xmax{10.5};
\def\Ymax{13.5};
\def\Xmin{0};
\def\Ymin{0};
\def\Xgrid{1};
\def\Ygrid{1};
\def\Lngmax{2};
\def\Lngmin{2.5};
\def\ticsize{1pt}

\draw[help lines,ystep=\Ygrid,xstep=\Xgrid] (\Xmin,\Ymin) grid (\Xmax,\Ymax); %Définition grille
\begin{scope}
\foreach \x/\xtext in {\Xmin,\Xgrid,...,\Xmax}
\draw[xshift=\x cm] (0pt,\ticsize) -- (0pt,-\ticsize) node[below] {$\xtext$};
\foreach \y/\ytext in {\Ymin,\Ygrid,...,\Ymax}
\draw[yshift=\y cm] (\ticsize,0pt) -- (-\ticsize,0pt) node[left] {\printresult{100*\y}};
\end{scope}

\draw [->] (\Xmin,\Ymin) -> (\Xmax,\Ymin) node[right] {$t$} coordinate(x axis); %axe des X
\draw [->] (\Xmin,\Ymin) -> (\Xmin,\Ymax) node[above] {$longueur$} coordinate(y axis); %axe des y
\begin{scope}[blue,very thick,y=0.01cm] % Lng Cardan
\draw plot file {C2-beta/E-tableau/b21/pliage_lng};
\end{scope}

\begin{scope}[purple,very thick] % Limite Lng Cardan
\draw [-] (0,\Lngmax) -- (\Xmax,\Lngmax);
\draw [-] (0,\Lngmin) -- (\Xmax,\Lngmin);
\end{scope}

\end{tikzpicture}

\end{document}
pg
Modérateur
 
Messages: 2597
Inscription: Jeudi 14 Juin 2007, 23:31

Re: "Dimension too large" pour mon graphique Tikz

Messagepar iznogoud » Mardi 30 Décembre 2008, 13:48

COOOOOOOOOOOOOOOOL :D :D
C'est exactement ce que je souhaite....

Je prend bonne note des éléments suivants (et ce que j'en retiens):
    - L'astuce d'échelle "y=0.1cm"
    - Le package xlop pour simplifier les calculs (jamais utilisé !!!)


Merci
iznogoud
Déca-utilisateur
 
Messages: 36
Inscription: Mardi 04 Novembre 2008, 22:14
Localisation: Strasbourg
Statut actuel: Post-bac | Ecole d'ingénieur

Re: "Dimension too large" pour mon graphique Tikz

Messagepar Altermundus » Mardi 30 Décembre 2008, 14:33

pg a écrit:Le problème des dimensions trop grandes est courant avec TikZ.

Il est impossible de répondre avec précision sans voir le code de ta figure, mais le problème peut venir de l'unité utilisée (\tikz \draw (0,0)--(1300,0); ne fonctionnera pas, mais \tikz \draw (0,0)--(1300mm,0); oui), mais souvent, cela vient d'un calcul intermédiaire dans lequel il y a un nombre trop grand


Bonjour et bonne fin d'année

Je pense que l'on peut répondre, en tout cas expliquer d'où provient l'erreur.

Tout d'abord pgf/tikz est un ensemble de packages TeX. Il dépend de celui-ci. On peut rappeler au passage que TeX met tout dans des registres sous forme d'entiers. L'unité interne de TeX est le sp, et 1pt = 65 536 sp. Dans un registre, les valeurs possibles sont inférieures (il me semble ..) à 2^30 soit 1 073 741 824 donc une dimension ne peut dépasser 16 384 pt soit 5758,87521 mm (1mm = 2,845pt) soit de l'ordre de 5,7 m. On peut bosser sur une belle affiche mais cela impose des limites pour qui veut faire des calculs avec TeX. La doc de TikZ est claire sur le sujet :
" This expression can be parsed by the mathematical engine and the result be placed in a dimension register, a counter, or a macro. Supported are
infix mathematical operations involving integers and non-integers, with or without units.
It should be noted that all calculations must not exceed 16383.99999 at any point, because the underlying algorithms rely on TEX dimensions."

On retrouve la limitation de 16 384 pt. Dans l'exemple 1300 correspond à 1300 cm soit 13 m et boum.

Comment faire ? et bien il faut contrôler ses calculs ce qui n'est pas drôle. On peut, comme je l'ai fait dans mes packages (tkz-base et tkz-fct ), jongler avec les unités. Je montre comment tracer le graphe d'une fonction avec des antécédents entre 1000 et 10000. Cela dit cela a un coup, voir plusieurs : perte de précision ( ce n'est guère un problème si c'est pour obtenir une illustration) temps de compilation car pour bien faire il est préférable de passer par fp.sty qui permet d'améliorer les résultats (en gros on stocke un nombre sur plusieurs registres).

Conclusion : TeX et TikZ ne sont pas doués pour le calcul mais ont des capacités suffisantes pour dessiner sur une page A4 en contrôlant parfaitement et simplement le texte et les labels, ce qui est le but recherché !

Alain
Altermundus
Giga-utilisateur
 
Messages: 557
Inscription: Lundi 28 Mai 2007, 09:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant

Re: "Dimension too large" pour mon graphique Tikz

Messagepar supermathrix » Mercredi 03 Novembre 2010, 21:46

Code: Tout sélectionner
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=0.5cm,y=0.5cm]
\shorthandoff{:;!?}
\draw [color=cqcqcq,dash pattern=on 1pt off 1pt, xstep=0.5cm,ystep=0.5cm] (-4,-4) grid (4,4);
\draw[->,color=black] (-4,0) -- (4,0);
\foreach \x in {-4,-3,-2,-1,1,2,3}
\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};
\draw[->,color=black] (0,-4) -- (0,4);
\foreach \y in {-4,-3,-2,-1,1,2,3}
\draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};
\draw[color=black] (0pt,-10pt) node[right] {\footnotesize $0$};
\clip(-4,-4) rectangle (4,4);
\draw[smooth,samples=100,domain=-4.0:4.0] plot(\x,{1/\x});
\draw[color=black] (-4.1,-0.38) node {$f7$};
\end{tikzpicture}


J'ai également l'erreur de la dimension trop grande mais je ne vois pas où se situe le problème...
supermathrix
Déca-utilisateur
 
Messages: 10
Inscription: Mercredi 03 Novembre 2010, 20:57
Statut actuel: Post-bac | Master

Re: "Dimension too large" pour mon graphique Tikz

Messagepar pg » Jeudi 04 Novembre 2010, 00:35

On est entre -4 et 4 et on trace 1/x donc il y a un problème en 0. Il suffit de tracer en deux fois pour éviter le problème :

Code: Tout sélectionner
\draw[smooth,samples=100] plot[domain=-4.0:-0.1] (\x,{1/\x});
\draw[smooth,samples=100] plot[domain=0.1:4.0] (\x,{1/\x});
pg
Modérateur
 
Messages: 2597
Inscription: Jeudi 14 Juin 2007, 23:31

Re: "Dimension too large" pour mon graphique Tikz

Messagepar supermathrix » Jeudi 04 Novembre 2010, 11:33

Parfait !
supermathrix
Déca-utilisateur
 
Messages: 10
Inscription: Mercredi 03 Novembre 2010, 20:57
Statut actuel: Post-bac | Master


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Grapeshot [Crawler] et 30 invités