2015-05-04 22 views
5

[Ambiente: graphviz 2.38/Windows 7]Utilizzando carattere simbolo/notazione matematica in graphviz

Utilizzando dot, voglio produrre diagrammi percorso simile al seguente per rappresentare un modello di equazioni strutturali (beh, qui, solo un semplice modello di misurazione a un fattore). Mi piacerebbe usare lettere greche per alcuni nodi e spigoli, e sarebbe in realtà preferiscono se potevo usare la notazione LaTeX simile nel file di punti come \ksi, \lambda_1 o \delta_1

threevar

Questo schema dovrebbe rappresentano le tre equazioni

\begin{eqnarray*} 
x_{1i} & = & \lambda_1 \xi_{i} + \delta_{1i} \\ 
x_{2i} & = & \lambda_2 \xi_{i} + \delta_{2i} \\ 
x_{3i} & = & \lambda_3 \xi_{i} + \delta_{3i} 
\end{eqnarray*} 

il più vicino sono venuto per questo è il seguente kludge di file .dot, dove ho scelto font = "Simbolo" e sostituito le lettere greche da loro equivalenti romani.

Tuttavia, questo non funziona con dot -Tpdf o AFAICS qualsiasi altro dispositivo altro di Postscript dot -Tps, dandomi un file .eps devo convertire in PDF o PNG.

Domanda: c'è qualcosa di meglio per questa situazione?

digraph threevar { 
    rankdir=LR; 
    size="8,4"; 
    node [fontname="Helvetica" fontsize=14 shape=box]; 
    edge [fontname="Symbol" fontsize=10]; 
    center=1; 
    {rank=min k } 
    {rank=same X1 X2 X3 } 
    {rank=max z1 z2 z3 } 
    z1 [shape=circle fontname="Symbol" label="d1"]; 
    z2 [shape=circle fontname="Symbol" label="d2"]; 
    z3 [shape=circle fontname="Symbol" label="d3"]; 
    k [fontname="Symbol" label="x" shape="ellipse"]; 
    k -> X1 [label="l1"]; 
    k -> X2 [label="l2"]; 
    k -> X3 [label="l3"]; 
    z1 -> X1; 
    z2 -> X2; 
    z3 -> X3; 
} 
+0

stupida domanda: perché non basta scrivere δ₁, δ₂, ecc testo letterale con il tuo file salvato con la codifica utf8? Sia il greco che i pedici da 0 a 9 sono disponibili in Unicode per etichette con indice infinito, quindi invece di usare la notazione Xe (La) TeX, prova a usare solo up δ₁, δ₂, δ₃, λ₁, λ₂ e λ₃, e poi vedi se il punto accetta quelli? –

+0

Speravo che ci fosse un modo semplice e diretto che mi era sfuggito da qualche parte; inoltre, i caratteri unicode sono un dolore da inserire. – user101089

+0

"Usare semplicemente il testo che vuoi vedere, direttamente" è tanto semplice quanto diventa, ma la parte "dolore da inserire" è vera se non usi nulla per semplificarti la vita. Su Windows, io uso che utilizzo gratuitamente http://www.babelstone.co.uk/Software/BabelMap.html per trovare praticamente qualsiasi carattere di cui ho bisogno ma non riesco a digitare. Grazie a questo, da anni non provo dolore. –

risposta

3

OK, utilizzando caratteri UTF8 direttamente nel file .dot, ora posso evitare il simbolo di carattere kludge (ma quello che ho provato per indici, ad esempio, pedice-one, x2081 basta avere una piccola scatola contenente ' 2081 ')

Ecco il file revisionato, che ora funziona sia con -Tpdf sia con -Tpng. (I caratteri UTF8 non vengono visualizzati correttamente in questo post.)

digraph threevar { 
     rankdir=LR; 
     size="8,4"; 
     node [fontsize=14 shape=box]; 
     edge [fontsize=10]; 
     center=1; 
     {rank=min k } 
     {rank=same X1 X2 X3 } 
     {rank=max z1 z2 z3 } 
     z1 [shape=circle label="d1"]; 
     z2 [shape=circle label="d2"]; 
     z3 [shape=circle label="d3"]; 
     k [label="?" shape="ellipse"]; 
     k -> X1 [label="?1"]; 
     k -> X2 [label="?2"]; 
     k -> X3 [label="?3"]; 
     z1 -> X1; 
     z2 -> X2; 
     z3 -> X3; 
    } 

Il risultato è:

enter image description here