Re: Tikz da Geogebra

#84738
Up
0
Down
::


Il problema di fondo, secondo me, è proprio l’uso di GeoGebra. Serve davvero per questo grafico? Sicuramente si obbietterà che si fa prima, ma con le nefandezze di codice e risultato che produce io lo lascerei stare.

Un piccolo elenco:
`\draw[->,color=black] (-4.4787,0) — (4.494,0); ` scrivere [tt]color=black[/tt] non ha senso: è il predefinito.

Torno alle opzioni: `x=1.0cm,y=1.0cm` idem come sopra: sono predefinite.
`\foreach \x in {-4,-3.5,-3,-2.5,-2,-1.5,-1,-0.5,0.5,1,1.5,2,2.5,3,3.5,4}` Dunque: quella lista, per escludere solo lo 0 è assurda. Se proprio si vuole escludere un numero si fa: `\foreach \x in {-4,-3.5,…,-0.5,0.5,1,…,4}
` ma nell’esempio che illustro in seguito ho eliminato del tutto questo workaround con qualcosa di più elegante. La cosa interessante è: `\draw[shift={(\x,0)},color=black] (0pt,2pt) — (0pt,-2pt) node[below] {\footnotesize $\x$};` È indecente. Perché si debba shiftare la coordinata di partenza è un mistero oltre che un’operazione inutile, perché si utilizzi il tipo di font all’interno del testo non è molto bello. Sul colore mi sono già espresso. Più semplicemente: `\draw (\x,2pt)–(\x,-2pt) node[below,font=\footnotesize]{\x};`

Su:
`\foreach \y in {-0.4,-0.3,-0.2,-0.1,0.2,0.3,0.4,0.5}` stesso discorso di prima.

Questo: `\draw (0pt,-10pt) node

{\footnotesize $0$};` è fantastico. La traduzione normale è: `
\node[font=\footnotesize,right] at (0pt,-10pt) {0};
`

Utilizzare 1^2*2 e abs(1) è nel commento di @OldClaudio, perciò sorvolo.

Tutte queste label con frecce:
`
\draw (-1.3785,0.539) node[anchor=north west] {Zona di accettazione};
\draw [->,line width=1.2pt] (0.168,0.5045) — (0.0885,0.4122);
\draw (2.9141,0.2337) node[anchor=north west] {Zona di rifiuto};
\draw [->,line width=1.2pt] (3.6492,0.1821) — (3.013,0.0365);
\draw (2.6034,-0.1513) node[anchor=north west] {z critico 2.58};
\draw [->] (3.1959,-0.1278) — (2.5889,-0.0089);
\draw (-3.98,0.2572) node[anchor=north west] {Zona di rifiuto};
\draw [->,line width=1.2pt] (-2.9201,0.2118) — (-2.7732,0.0365);
\draw (-3.4814,-0.1294) node[anchor=north west] {z critico -2.58};
\draw [->] (-3.1056,-0.1137) — (-2.607,-0.0136);
` oltre a essere posizionate male sul disegno, vengono sempre realizzate con [tt]\draw[/tt] anziché [tt]\node[/tt].

Infine…
`\begin{scriptsize}
\draw (0.2041,0.0397) node {$c = 0.9901$};
\end{scriptsize}` semplicemente é: `\node[font=\scriptsize]at (0.2041,0.0397) {$c = 0.9901$};`

Dimenticavo: non è necessario caricare la libreria [tt]arrows[/tt] per questo esempio.

Tutti i tool che fanno le cose in automatico hanno qualche fregatura sotto.. quelle che ho elencato sono di codice e, oltre a quelle matematiche, mi fanno seriamente dire che è meglio farsi le cose a mano.

Cosa avrei fatto io (tenendo comunque le coordinate create con GeoGebra):
`\begin{tikzpicture}[line cap=round,line join=round,>=stealth,y=5cm]
% Assi
\draw[->] (-4.4787,0) — (5.494,0);
\draw[->] (0,-0.4111) — (0,0.575);` disegno degli assi e opzioni iniziali.

Le label dell’asse x: `% Label asse x
\foreach \x in {-4,-3.5,…,4}{
\pgfmathequal{\x}{0}
\ifnum\pgfmathresult=1
\node[below right,font=\tiny] at (\x,\x){\x};
\else
\draw (\x,2pt)–(\x,-2pt) node[below,font=\tiny]{\x};
\fi
}` Come dicevo prima, si fa molto prima a tenere la lista intera e fare un controllo per escludere solo lo 0.

Le label dell’asse y e la c=0.9901: `
% Label asse y
\foreach \y in {-0.4,-0.3,…,-0.1,0.2,0.3,…,0.5}
\draw (2pt,\y)–(-2pt,\y) node[left,font=\tiny]{\pgfmathprintnumber{\y}};

% label c
\node[font=\scriptsize] at (0.2041,0.0397) {$c = 0.9901$};
` Attenzione: siccome hai inserito la trasformazione dell’asse y con [tt]y=5cm[/tt], un foreach normale stamperebbe dei risultati tipo -0.20001. Perciò, inserendo nel preambolo: `
\pgfkeys{/pgf/number format/.cd,fixed,precision=1}
` e stampando il numero con [tt]\pgfmathprintnumber{\y}[/tt] si evita quell’inconveniente.

Le varie label (messe un po’ meglio e raggruppando le opzioni simili): `
% varie label
\begin{scope}[->, line width=1.2pt]
\node[anchor=north west] (x) at (-1.3785,0.7) {Zona di accettazione};
\draw (x) — (0.0885,0.4122);
\node[anchor=north west] (y) at (2.9141,0.2337) {Zona di rifiuto};
\draw (y) — (3.013,0.0365);
\node[anchor=north] (y) at (-3.98,0.2572) {Zona di rifiuto};
\draw (y) — (-2.7732,0.0365);
\end{scope}

\node[anchor=north west] (z) at (2.6034,-0.1513) {z critico 2.58};
\draw [->] (z) — (2.5889,-0.0089);
\node[anchor=north] (z) at (-3.4814,-0.1294) {z critico -2.58};
\draw [->] (z) — (-2.607,-0.0136);
` Ora sistemiamo in background tutto il resto: in questo modo gli assi risulteranno “sopra” gli altri elementi: `
% in background qualche elemento
\begin{scope}[on background layer]
% Riquadro
\path[fill=black,fill opacity=0.1] (-2.58,0) — (-2.58,0.575)
— (2.58,0.575) — (2.58,0) — (-2.58,0);
% ridesegno i segmenti
\draw (-2.58,0) — (-2.58,0.575)(2.58,0.575) — (2.58,0);

% clip sul rettangolo per evitare problemi con la funzione seguente
\clip(-4.4787,-0.4111) rectangle (5.494,0.575);

% zona bianca
\draw[fill=white,smooth,samples=50,domain=-2.58:2.58] plot(\x,{2.718281828^((-(\x)^2)/2)/(sqrt(2*pi))});

% zona grigio scuro
\draw[fill=black,fill opacity=0.1, smooth,samples=50,domain=-2.58:2.58] plot (\x,{exp(-(\x)^2/2)/sqrt(2*pi)}) — (2.58,0) — (-2.58,0) — cycle;
\end{scope}
\end{tikzpicture}
\end{document}
` Il risultato:
[attachment=664]x.jpg[/attachment]

Per referenza, il codice complessivo: `
\documentclass[png,border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\pgfkeys{/pgf/number format/.cd,fixed,precision=1}

\begin{document}
\begin{tikzpicture}[line cap=round,line join=round,>=stealth,y=5cm]
% Assi
\draw[->] (-4.4787,0) — (5.494,0);
\draw[->] (0,-0.4111) — (0,0.575);
% Label asse x
\foreach \x in {-4,-3.5,…,4}{
\pgfmathequal{\x}{0}
\ifnum\pgfmathresult=1
\node[below right,font=\tiny] at (\x,\x){\x};
\else
\draw (\x,2pt)–(\x,-2pt) node[below,font=\tiny]{\x};
\fi
}
% Label asse y
\foreach \y in {-0.4,-0.3,…,-0.1,0.2,0.3,…,0.5}
\draw (2pt,\y)–(-2pt,\y) node[left,font=\tiny]{\pgfmathprintnumber{\y}};

% label c
\node[font=\scriptsize] at (0.2041,0.0397) {$c = 0.9901$};

% varie label
\begin{scope}[->, line width=1.2pt]
\node[anchor=north west] (x) at (-1.3785,0.7) {Zona di accettazione};
\draw (x) — (0.0885,0.4122);
\node[anchor=north west] (y) at (2.9141,0.2337) {Zona di rifiuto};
\draw (y) — (3.013,0.0365);
\node[anchor=north] (y) at (-3.98,0.2572) {Zona di rifiuto};
\draw (y) — (-2.7732,0.0365);
\end{scope}

\node[anchor=north west] (z) at (2.6034,-0.1513) {z critico 2.58};
\draw [->] (z) — (2.5889,-0.0089);
\node[anchor=north] (z) at (-3.4814,-0.1294) {z critico -2.58};
\draw [->] (z) — (-2.607,-0.0136);

% in background qualche elemento
\begin{scope}[on background layer]
% Riquadro
\path[fill=black,fill opacity=0.1] (-2.58,0) — (-2.58,0.575)
— (2.58,0.575) — (2.58,0) — (-2.58,0);
% ridesegno i segmenti
\draw (-2.58,0) — (-2.58,0.575)(2.58,0.575) — (2.58,0);

% clip sul rettangolo per evitare problemi con la funzione seguente
\clip(-4.4787,-0.4111) rectangle (5.494,0.575);

% zona bianca
\draw[fill=white,smooth,samples=50,domain=-2.58:2.58] plot(\x,{2.718281828^((-(\x)^2)/2)/(sqrt(2*pi))});

% zona grigio scuro
\draw[fill=black,fill opacity=0.1, smooth,samples=50,domain=-2.58:2.58] plot (\x,{exp(-(\x)^2/2)/sqrt(2*pi)}) — (2.58,0) — (-2.58,0) — cycle;
\end{scope}
\end{tikzpicture}
\end{document}
`

Ciao
Claudio

Attachments:
You must be logged in to view attached files.

Go to top