- Questo topic ha 11 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 6 anni, 3 mesi fa da
robitex.
-
CreatoreTopic
-
5 Giugno 2020 alle 9:40 #118125::
Buongiorno,
sono alle prime armi con TikZ e avrei bisogno di un aiuto per un diagramma. Quello che vorrei è esattamente il seguente, senza però il secondo, il terzo ed il quarto cerchietto:
`\begin{center}
\begin{tikzpicture}[scale=0.50]
\foreach \n/\x/\l/\p in{
1/{(0,0)}/{$i$}/above,
2/{(2,0)}/{$d_{ij}$}/above,
3/{(4,0)}/{$g_{ij}$}/above,
4/{(6,0)}/{$d_{ji}$}/above,
5/{(8,0)}/{$j$}/above
}
{
\node[inner sep=2pt, draw, circle, label={\p:\l}] (\n) at \x {};
}
\draw (1) node[left, below=0.1cm] {$s_i$} — (5) node[right, below=0.1cm] {$s_j$};
\end{tikzpicture}
\end{center}`Immagino che sia una sciocchezza, ma ho fatto vari tentativi senza riuscire.Grazie mille
William
-
CreatoreTopic
-
AutoreRisposte
-
-
5 Giugno 2020 alle 12:23 #118126::
william” post=118567Buongiorno,
sono alle prime armi con TikZ e avrei bisogno di un aiuto per un diagramma. Quello che vorrei è esattamente il seguente, senza però il secondo, il terzo ed il quarto cerchietto:
`\begin{center}
\begin{tikzpicture}[scale=0.50]
\foreach \n/\x/\l/\p in{
1/{(0,0)}/{$i$}/above,
2/{(2,0)}/{$d_{ij}$}/above,
3/{(4,0)}/{$g_{ij}$}/above,
4/{(6,0)}/{$d_{ji}$}/above,
5/{(8,0)}/{$j$}/above
}
{
\node[inner sep=2pt, draw, circle, label={\p:\l}] (\n) at \x {};
}
\draw (1) node[left, below=0.1cm] {$s_i$} — (5) node[right, below=0.1cm] {$s_j$};
\end{tikzpicture}
\end{center}`Immagino che sia una sciocchezza, ma ho fatto vari tentativi senza riuscire.Grazie mille
William
Ciao. Qualcosa come questo potrebbe andare?`\documentclass{minimal}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mwe}
\usepackage{tikz}\begin{document}
\begin{tikzpicture}[scale=0.50]
\foreach \n/\x/\l/\p in{
1/{(0,0)}/{$i$}/above,
2/{(8,0)}/{$j$}/above
}
{
\node[inner sep=2pt, draw, circle, label={\p:\l}] (\n) at \x {};
}
\draw (1) node[left, below=0.1cm] {$s_i$} — (2) node[right, below=0.1cm] {$s_j$};
\end{tikzpicture}
\end{document}`
Lorenzo
-
6 Giugno 2020 alle 9:23 #118127::
Grazie mille, Lorenzo!Così però sono spariti anche d_ij, g_ij e d_ji. Io li vorrei lì dove sono, semplicemente senza i cerchietti sotto. Un’altra cosa, poi, se posso: come posso costruire un diagramma con due nodi (cerchietti) e un doppio o triplo “legame” tra i due?
Grazie ancora
William
-
8 Giugno 2020 alle 4:52 #118128::
william” post=118579Grazie mille, Lorenzo!
Così però sono spariti anche d_ij, g_ij e d_ji. Io li vorrei lì dove sono, semplicemente senza i cerchietti sotto. Un’altra cosa, poi, se posso: come posso costruire un diagramma con due nodi (cerchietti) e un doppio o triplo “legame” tra i due?
Grazie ancora
WilliamCiao William,
se non vuoi i cerchietti si può separare il disegno degli estremi con quello delle etichette intermedie.
Con istruzioni separate disegni i segmenti e gli estremi etichettati:
`\node[inner sep=2pt, draw, circle, label=above:{$i$},label=below:$s_i$] (i) at (0,0) {};
\node[inner sep=2pt, draw, circle, label=above:{$j$},label=below:$s_j$] (j) at (4,0) {};
\draw (i) — (j);`
Come vedi si possono assegnare più etichette alla volta al nodo.
Nel ciclo \foreach opportunamente modificato puoi continuare a disegnare le etichette:
`\foreach \x/\lbl in {1/$d_{ij}$, 2/$g_{ij}$, 3/$d_{ij}$}{
\node[inner sep=2pt,label=above:\lbl] at (\x,0) {};
}`
Se vuoi più linee le puoi disegnare con l’opzione yshift:
`\draw[yshift=0.5mm] (0,0) — (4,0);
\draw[yshift=-0.5mm] (0,0) — (4,0);`
a patto di aggiungere l’opzione fill=white al disegno dei cerchietti e di disegnare le linee parallele prima di quella centrale.Il codice non è ancora abbastanza elegante ma funziona bene.
Per migliorarlo sarebbe utile creare uno stile apposito per i nodi con cerchietto. Poi si dovrebbe risolvere il problema del piccolo disallineamento verticale tra le etichette centrali e di estremità dovuto alla presenza in quelle centrali della j che ha un discendente e perciò l’etichetta appare un po’ più in alto.
Le linee parallele possono essere disegnate anche con diversi stili su un unico segmento.
E ancora, fatto di convenzione matematica, occorre accertarsi che i simboli siano corretti perché io di solito uso il font “dritto” per i pedici:
`$d_\mathrm{ij}$`
Naturalmente il codice del tuo disegno è abbastanza semplice se si legge la doc del pacchetto TiKZ.
Alla prossima.
Ciao.
R.
-
8 Giugno 2020 alle 5:44 #118129::
william” post=118579Grazie mille, Lorenzo!
Così però sono spariti anche d_ij, g_ij e d_ji. Io li vorrei lì dove sono, semplicemente senza i cerchietti sotto. Un’altra cosa, poi, se posso: come posso costruire un diagramma con due nodi (cerchietti) e un doppio o triplo “legame” tra i due?
Grazie ancora
WilliamSoltanto per mettere insieme in un esempio compilabile i preziosi consigli di @robitex,`\documentclass{minimal}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mwe}
\usepackage{tikz}\begin{document}
\begin{tikzpicture}% etichetta e cerchio a sinistra
\node[inner sep=2pt, draw, circle, label=above:{$i$},label=below:$s_\mathrm{i}$] (i) at (0,0) {};% etichetta e cerchio a destra
\node[inner sep=2pt, draw, circle, label=above:{$j$},label=below:$s_\mathrm{j}$] (j) at (4,0) {};% etichette intermedie
\foreach \x/\lbl in {1/$d_\mathrm{ij}$, 2/$g_\mathrm{ij}$, 3/$d_\mathrm{ij}$}{
\node[inner sep=2pt,label=above:\lbl] at (\x,0) {};
}% linea cerchio-cerchio
\draw (0,0) — (4,0);
\end{tikzpicture}
\end{document}`.
Lorenzo
-
8 Giugno 2020 alle 8:49 #118130::
@robitex, i pedici vanno diritti se e solo se indicano apposizioni alle variabili, non se sono degli indici (pedici o apici) che rappresentano grandezze variabili; in sostanza `$d_{ij}$ % perché i e j sonodue indici matematici che variano in un dato intervallo
$x_{\mathrm{max}}$ % perché max, abbreviazione di massimo, è un'apposizione della variable x
`Inoltre il disallineamento dei nodi con della matematica dentro si risulver \inserendo un \mathstrut prima o dopo l’espressione che caratterizza il nodo, ma sempre in ambiente matematico; il pilastrino \mathstrut si estende in alto e in basso tanto quanto una parentesi, ma ha larghezza nulla ed è invisibile, pur occupando il suo spazio di altezza, profondità e larghezza (nulla); in matematica \mathsrtut cambia dimensioni a seocnda che l’ambientte matemaco in cui si trova sia composto in \textstyle, \displaystyle, \scriptstyle o \scriptscriptstyle – i quattro stili di composizione della matematica.
-
8 Giugno 2020 alle 10:22 #118131
-
8 Giugno 2020 alle 11:52 #118132::
OldClaudio” post=118588 @robitex, i pedici vanno diritti se e solo se indicano apposizioni alle variabili, non se sono degli indici (pedici o apici) che rappresentano grandezze variabili; in sostanza `$d_{ij}$ % perché i e j sonodue indici matematici che variano in un dato intervallo
$x_{\mathrm{max}}$ % perché max, abbreviazione di massimo, è un'apposizione della variable x
`Inoltre il disallineamento dei nodi con della matematica dentro si risulver \inserendo un \mathstrut prima o dopo l’espressione che caratterizza il nodo, ma sempre in ambiente matematico; il pilastrino \mathstrut si estende in alto e in basso tanto quanto una parentesi, ma ha larghezza nulla ed è invisibile, pur occupando il suo spazio di altezza, profondità e larghezza (nulla); in matematica \mathsrtut cambia dimensioni a seocnda che l’ambientte matemaco in cui si trova sia composto in \textstyle, \displaystyle, \scriptstyle o \scriptscriptstyle – i quattro stili di composizione della matematica.
Riporto il codice completo per comodità`\documentclass{minimal}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mwe}
\usepackage{tikz}\begin{document}
\begin{tikzpicture}% etichetta e cerchio a sinistra
\node[inner sep=2pt, draw, circle, label=above:{$\mathstrut i$},label=below:$\mathstrut s_{i}$] (i) at (0,0) {};% etichetta e cerchio a destra
\node[inner sep=2pt, draw, circle, label=above:{$\mathstrut j$},label=below:$\mathstrut s_{j}$] (j) at (4,0) {};% etichette intermedie
\foreach \x/\lbl in {1/$\mathstrut d_{ij}$, 2/$\mathstrut g_{ij}$, 3/$\mathstrut d_{ij}$}{
\node[inner sep=2pt, label=above:\lbl] at (\x,0) {};
}% linea cerchio-cerchio
\draw (0,0) — (4,0);
\end{tikzpicture}
\end{document}`
Lorenzo
-
9 Giugno 2020 alle 8:49 #118133::
Grazie ancora!L’unica cosa che non ho ancora capito è come ottenere un doppio o triplo legame tra due cerchietti:
“Se vuoi più linee le puoi disegnare con l’opzione yshift:
\draw[yshift=0.5mm] (0,0) — (4,0);
\draw[yshift=-0.5mm] (0,0) — (4,0);a patto di aggiungere l’opzione fill=white al disegno dei cerchietti e di disegnare le linee parallele prima di quella centrale.”
Ho provato con
\begin{tikzpicture}[scale=0.50]
\node[inner sep=1.5pt, draw, circle, fill=white] (1) at (0,0) {};
\node[inner sep=1.5pt, draw, circle, fill=white] (2) at (2,0) {};
\draw[yshift=0.5mm] (1) — (2);
\draw[yshift=-0.5mm] (1) — (2);
\end{tikzpicture}ma non ottengo ciò che voglio, e non capisco “disegnare le linee parallele prima di quella centrale”.
Grazie mille
William
-
9 Giugno 2020 alle 9:57 #118134::
william” post=118596Grazie ancora!
L’unica cosa che non ho ancora capito è come ottenere un doppio o triplo legame tra due cerchietti:
“Se vuoi più linee le puoi disegnare con l’opzione yshift:
\draw[yshift=0.5mm] (0,0) — (4,0);
\draw[yshift=-0.5mm] (0,0) — (4,0);a patto di aggiungere l’opzione fill=white al disegno dei cerchietti e di disegnare le linee parallele prima di quella centrale.”
Ho provato con
\begin{tikzpicture}[scale=0.50]
\node[inner sep=1.5pt, draw, circle, fill=white] (1) at (0,0) {};
\node[inner sep=1.5pt, draw, circle, fill=white] (2) at (2,0) {};
\draw[yshift=0.5mm] (1) — (2);
\draw[yshift=-0.5mm] (1) — (2);
\end{tikzpicture}ma non ottengo ciò che voglio, e non capisco “disegnare le linee parallele prima di quella centrale”.
Grazie mille
WilliamCiao William,
puoi usare il tag code per racchiudere il codice grazie.
Quanto al problema, è che se usi i nomi dei nodi anziché indicare le loro coordinate l’opzione yshift non funziona.
Usa:
`\draw[yshift=0.5mm] (0, 0) — (2,0);
\draw[yshift=-0.5mm] (0,0) — (2,0);`
Ciao.
R.
-
9 Giugno 2020 alle 14:11 #118135::
Grazie mille,l’ultima cosa: con il seguente codice (mi spiace, ma non so cosa sia il tag code per racchiudere il codice), però, ottengo un triplo legame che parte dall’interno del cerchietto. Io invece vorrei il cerchietto tutto bianco.
\begin{tikzpicture}[scale=0.50]
\node[inner sep=1.5pt, draw, circle, fill=white] (1) at (0,0) {};
\node[inner sep=1.5pt, draw, circle, fill=white] (2) at (2,0) {};
\draw[yshift=0.7mm] (0, 0) — (2,0);
\draw[yshift=0mm] (0,0) — (2,0);
\draw[yshift=-0.7mm] (0, 0) — (2,0);
\end{tikzpicture}Grazie ancora
William
-
9 Giugno 2020 alle 16:35 #118136::
william” post=118601Grazie mille,
l’ultima cosa: con il seguente codice (mi spiace, ma non so cosa sia il tag code per racchiudere il codice), però, ottengo un triplo legame che parte dall’interno del cerchietto. Io invece vorrei il cerchietto tutto bianco.
`
\begin{tikzpicture}[scale=0.50]
\node[inner sep=1.5pt, draw, circle, fill=white] (1) at (0,0) {};
\node[inner sep=1.5pt, draw, circle, fill=white] (2) at (2,0) {};
\draw[yshift=0.7mm] (0, 0) — (2,0);
\draw[yshift=0mm] (0,0) — (2,0);
\draw[yshift=-0.7mm] (0, 0) — (2,0);
\end{tikzpicture}
`Grazie ancora
WilliamIl tag code lo si inserisce con il pulsante in alto con l’icona di una pagina con il simboli di minore e maggiore.
… per questo ti avevo suggerito di disegnare PRIMA le linee in modo che disegnando DOPO il cerchietto bianco coprisse gli estremi.
R.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.