Re: Migliormenti diagramma di hasse con tikzpicture

#81847
Up
0
Down
::

Dr Spencer Reid” post=81102ho creato il seguente diagramma di Hasse, come diagramma di partenza.

`\begin{center}
% disegnare punti
\begin{tikzpicture}[scale=.75]
\draw[fill] (-1, 1) circle (.08cm) node

{$g_1$};
\draw[fill] (-3, 0) circle (.08cm) node

{$g_2$};
\draw[fill] (-1, -1) circle (.08cm) node

{$g_3$};
\draw[fill] (1, 0) circle (.08cm) node

{$g_4$};
% disegnare legami
\draw (-1,1) — (-3,0);
\draw (-1,1) — (1,0);
\draw (-3,0) — (-1,-1);
\draw (-1,-1) — (1,0);
\end{tikzpicture}
\end{center}`

ma ho i seguenti dubbi, dovuti all’inesperienza con questo pacchetto, appena iniziato ad usare:
– è possibile separare il nome dei punti leggermente dal punto relativo?
– è possibile separare le linee dai punti? a me serve che i punti siano collegati, ma non che le linee tocchino le estremità

grazie a tutti per gli aiuti e la pazienza! :mrgreen:

Vedo parecchie soluzioni per migliorare il tuo codice: ne riporto qualcuna.

`
\documentclass[a4paper,11pt]{article}
\usepackage[width=15cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{tkzexample}
\colorlet{codebackground}{blue!20}%
\colorlet{graphicbackground}{yellow!20}%

\begin{document}
Soluzione 1: dispendiosa

\begin{tkzexample}[width=4cm]
% disegnare punti
\begin{tikzpicture}[scale=.75]
\draw[fill] (-1, 1) circle (.08cm) node[above] {$g_1$};
\draw[fill] (-3, 0) circle (.08cm) node

{$g_2$};
\draw[fill] (-1, -1) circle (.08cm) node[below] {$g_3$};
\draw[fill] (1, 0) circle (.08cm) node

{$g_4$};
% disegnare legami
\draw (-1,1) — (-3,0);
\draw (-1,1) — (1,0);
\draw (-3,0) — (-1,-1);
\draw (-1,-1) — (1,0);
\end{tikzpicture}
\end{tkzexample}
\medskip

Soluzione 2: leggermente migliore
\begin{tkzexample}[width=3cm]
% disegnare punti
\begin{tikzpicture}[scale=.75]
\tikzset{marker/.style={inner sep=0pt}}
\draw[fill] (-1, 1) node[marker] (1){} circle (.08cm) node[above] {$g_1$};
\draw[fill] (-3, 0) node[marker] (2){}circle (.08cm) node

{$g_2$};
\draw[fill] (-1, -1) node[marker] (3){} circle (.08cm) node[below] {$g_3$};
\draw[fill] (1, 0) node[marker] (4){} circle (.08cm) node

{$g_4$};
% disegnare legami
\draw (1.center)–(2.center)–(3.center)–(4.center)–cycle;
\end{tikzpicture}
\end{tkzexample}
\pagebreak

Soluzione 3: mi piace
\begin{tkzexample}[width=3cm]
% disegnare punti
\begin{tikzpicture}[scale=.75]
\tikzset{marker/.style={circle,fill=black,scale=0.5}}
\node[marker, label=above:$g_1$] (1) at (-1, 1) {};
\node[marker, label=left:$g_2$] (2) at (-3, 0) {};
\node[marker, label=below:$g_3$] (3) at (-1, -1) {};
\node[marker, label=right:$g_4$] (4) at (1,0) {};
% disegnare legami
\draw (1.center)–(2.center)–(3.center)–(4.center)–cycle;
\end{tikzpicture}
\end{tkzexample}
\medskip

Soluzione 4: migliore
\begin{tkzexample}[width=3cm]
% disegnare punti
\begin{tikzpicture}[scale=.75]
\tikzset{marker/.style={circle,fill=black,scale=0.5}}
\foreach \x/\pos/\lab
in {1/{(-1,1)}/above, 2/{(-3, 0)}/left, 3/{(-1,-1)}/below, 4/{(1,0)}/right}
\node[marker, label=\lab:$g_\x$] (\x) at \pos {};
% disegnare legami
\draw (1.center)–(2.center)–(3.center)–(4.center)–cycle;
\end{tikzpicture}
\end{tkzexample}
\pagebreak

Soluzione 5: i segmenti non raggiungono i punti
\begin{tkzexample}[width=3cm]
% disegnare punti
\begin{tikzpicture}[scale=.75]
\tikzset{marker/.style={circle,fill=black,scale=0.5, outer sep=5pt}}
\foreach \x/\pos/\lab
in {1/{(-1,1)}/above, 2/{(-3, 0)}/left, 3/{(-1,-1)}/below, 4/{(1,0)}/right}
\node[marker, label=\lab:$g_\x$] (\x) at \pos {};
% disegnare legami
\draw (1)–(2)–(3)–(4)–(1);
\end{tikzpicture}
\end{tkzexample}
\pagebreak

Soluzione 6: solo per usare un po' le chiavi
\begin{tkzexample}[width=3cm]
% disegnare punti
\begin{tikzpicture}[scale=.75]
% setting labels in math mode

\tikzset{math mode labels/.style={%
execute at begin node=$,%
execute at end node=$,%
}
}
\pgfkeys{/tikz/.cd,%
use math mode labels/.is choice,%
use math mode labels/true/.style={math mode labels},%
use math mode labels/false/.style={},%
}%

\tikzset{set math mode labels/.style={%
use math mode labels=#1,%
},%
set math mode labels/.default=false,%
}

\tikzset{marker/.style={circle,fill=black,scale=0.5, outer sep=5pt}}

\foreach \x/\pos/\lab
in {1/{(-1,1)}/above, 2/{(-3, 0)}/left, 3/{(-1,-1)}/below}{
\node[marker] (\x) at \pos {};
\node[set math mode labels=true, \lab=0.1cm of \x] {g_\x};
}
\node[marker] (4) at (1,0) {};
\node

{g$_4$};
% disegnare legami
\draw (1)–(2)–(3)–(4)–(1);
\end{tikzpicture}
\end{tkzexample}

\end{document}
`

Ciao
Claudio

Go to top