nazgul17″ post=80115Buon sabato a tutti,
vi scrivo per chiedere un aiuto riguardante come fare un grafico cartesiano con tikzpicture. Finora ciò che sono riuscito a fare è
[attachment=533]grafico.png[/attachment]ma ciò che vorrei riuscire a fare (a parte la linea verde che ho sbagliato a disegnare: è troppo in basso) è questo:
[attachment=532]DSC_0210_res.JPG[/attachment]I comandi che ho usato (dentro un ambiente subfigure a sua volta dentro un ambiente figure, per la precisione) sono questi:
`\begin{tikzpicture}
\begin{axis}[
ytick={-1,0,1},
smooth,
xmin=0, xmax=3, ymin=-1, ymax=+2,
domain=0:+3, samples=100,
axis x line=bottom, axis y line=left,
width=8cm, height=4.5cm,
legend entries={buyer's profit, seller's profit, total profit},
legend pos=outer north east,
xlabel=$g$, ylabel=profit,
xtick={1,2},
xticklabel={$r \cdot v_s$, $r \cdot v_b$},
ytick={},
yticklabel={}
]
\addplot gnuplot {2 – x};
\addplot gnuplot {x – 1};
\addplot gnuplot {1};
\end{axis}
\end{tikzpicture}`Purtroppo non sono riuscito a creare le bande grigie: comandi come
`\fill [black!20] (-1.5,-1.5) rectangle (3.5,1.5);
\draw (1, -1) — (1, 2);`
non fanno apparire nulla di visibile nei grafici, quindi non so come fare quelle aree sbarrate (anche grigie andrebbero bene, volendo). Inoltre non so come scrivere quel “non accettabile”.Come avrete notato, inoltre, ho dei problemi con le xticklabel: cos’è che non ho capito di come si usano?
Infine, cosa (immagino) più banale di tutte, volevo che l’asse cartesiano delle x fosse disegnato all’ordinata 0 e non alla -1..
Grazie per ogni aiuto che potrete darmi 🙂
Uno starting point:`
\documentclass[a4paper,11pt]{article}
\usepackage{pgfplots}
\usetikzlibrary{patterns,backgrounds}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
smooth,
xmin=0, xmax=3.2, ymin=-1, ymax=3,
ytick={0,1,2},
domain=0:+3, samples=100,
axis x line=bottom, axis y line=left,
width=8cm, height=4.5cm,
legend entries={buyer's profit, seller's profit, total profit},
legend pos=outer north east,
xlabel=$g$, ylabel=profit,
xtick={1,2},
xticklabels={{$r \cdot v_s$},{ $r \cdot v_b$}},
axis x line*=center,
]
\addplot {2 – x};
\addplot {x – 1};
\addplot {1};
\begin{pgfonlayer}{background}
\fill[pattern=north west lines, opacity=0.3](axis cs:0,-1) rectangle (axis cs:1,3.2);
\node[rotate=30,font=\tiny,] at (axis cs:0.55,2.5){Non accettabile};
\end{pgfonlayer}
\end{axis}
\end{tikzpicture}
\end{document}
`
Alcuni dettagli: tu prima definivi un certo tipo di ytick ma poi eliminavi tali modifiche con `ytick={},
yticklabel={}` a fine opzioni. Altra cosa: devi usare [tt]xticklabels[/tt] e non [tt]xticklabel[/tt]. Infine: a me piace molto e ne faccio largo uso della libreria [tt]backgrounds[/tt] perciò le aree da eliminare sono state realizzate così. Nota che in pgfplots puoi accedere alle coordinate riferendoti con [tt](axis cs:…)[/tt]: leggi la guida introduttiva di Lorenzo e Tommaso. Per il pattern esiste l’apposita libreria in TikZ.
Ciao
Claudio