C'è un modo per mostrare le caselle orizzontalmente in alcuni casi e verticalmente in altre? (vedi related question).Organizza le caselle orizzontalmente e poi verticalmente in graphviz
Ecco il codice e l'output che sto ottenendo:
codice:
/**
** Diagram representing the Simulator Engine
**/
digraph G {
graph [
rankdir = "TB"
];
/**
** The simulator engine rectangle
**/
subgraph cluster_simulator_engine {
style=filled;
color=lightgrey;
node [style=filled,color=white];
label = "Simulator Engine";
/**
** The first topology
**/
subgraph cluster_T1 {
color=white;
node [style=filled];
/**
** The n^th neuron
**/
subgraph cluster_T1_N3 {
color=lightgrey;
node [style=filled];
label = "Neuron n";
/**
** The n^th synapse
**/
"T1_N3_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T1_N3_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T1_N3_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
/*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/
}
/**
** The second neuron
**/
subgraph cluster_T1_N2 {
color=lightgrey;
node [style=filled];
label = "Neuron 2";
/**
** The n^th synapse
**/
"T1_N2_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T1_N2_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T1_N2_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
/*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/
}
/**
** The third neuron
**/
subgraph cluster_T1_N1 {
color=lightgrey;
node [style=filled];
label = "Neuron 1";
/**
** The n^th synapse
**/
"T1_N1_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T1_N1_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T1_N1_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
/*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/
}
label = "Topology 1";
}
/**
** The second topology
**/
subgraph cluster_T2 {
color=white;
node [style=filled];
/**
** The n^th neuron
**/
subgraph cluster_T2_N3 {
color=lightgrey;
node [style=filled];
label = "Neuron n";
/**
** The n^th synapse
**/
"T2_N3_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T2_N3_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T2_N3_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
/*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/
}
/**
** The second neuron
**/
subgraph cluster_T2_N2 {
color=lightgrey;
node [style=filled];
label = "Neuron 2";
/**
** The n^th synapse
**/
"T2_N2_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T2_N2_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T2_N2_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
/*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/
}
/**
** The third neuron
**/
subgraph cluster_T2_N1 {
color=lightgrey;
node [style=filled];
label = "Neuron 1";
/**
** The n^th synapse
**/
"T2_N1_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T2_N1_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T2_N1_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
/*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/
}
label = "Topology 2";
}
}
}
uscita:
Ovviamente questo è di gran lunga troppo lungo. Quello che voglio è spostare ogni sinapsi nella sua stessa linea (penso che si chiami 'rank' in Graphviz-jargon). Apparentemente, non c'è modo di farlo, ma c'è un trick. Pertanto, prendo lo stesso codice di cui sopra e presento bordi invisibili in questo modo
codice:
/**
** Diagram representing the Simulator Engine
**/
digraph G {
graph [
rankdir = "TB"
];
/**
** The simulator engine rectangle
**/
subgraph cluster_simulator_engine {
style=filled;
color=lightgrey;
node [style=filled,color=white];
label = "Simulator Engine";
/**
** The first topology
**/
subgraph cluster_T1 {
color=white;
node [style=filled];
/**
** The n^th neuron
**/
subgraph cluster_T1_N3 {
color=lightgrey;
node [style=filled];
label = "Neuron n";
/**
** The n^th synapse
**/
"T1_N3_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T1_N3_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T1_N3_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
"T1_N3_S1" -> "T1_N3_S2" [style=invis];
"T1_N3_S2" -> "T1_N3_S3" [style=invis];
}
/**
** The second neuron
**/
subgraph cluster_T1_N2 {
color=lightgrey;
node [style=filled];
label = "Neuron 2";
/**
** The n^th synapse
**/
"T1_N2_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T1_N2_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T1_N2_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
"T1_N2_S2" -> "T1_N2_S3" [style=invis];
"T1_N2_S1" -> "T1_N2_S2" [style=invis];
}
/**
** The third neuron
**/
subgraph cluster_T1_N1 {
color=lightgrey;
node [style=filled];
label = "Neuron 1";
/**
** The n^th synapse
**/
"T1_N1_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T1_N1_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T1_N1_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
"T1_N1_S1" -> "T1_N1_S2" [style=invis];
"T1_N1_S2" -> "T1_N1_S3" [style=invis];
}
label = "Topology 1";
}
/**
** The second topology
**/
subgraph cluster_T2 {
color=white;
node [style=filled];
/**
** The n^th neuron
**/
subgraph cluster_T2_N3 {
color=lightgrey;
node [style=filled];
label = "Neuron n";
/**
** The n^th synapse
**/
"T2_N3_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T2_N3_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T2_N3_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
"T2_N3_S1" -> "T2_N3_S2" [style=invis];
"T2_N3_S2" -> "T2_N3_S3" [style=invis];
}
/**
** The second neuron
**/
subgraph cluster_T2_N2 {
color=lightgrey;
node [style=filled];
label = "Neuron 2";
/**
** The n^th synapse
**/
"T2_N2_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T2_N2_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T2_N2_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
"T2_N2_S1" -> "T2_N2_S2" [style=invis];
"T2_N2_S2" -> "T2_N2_S3" [style=invis];
}
/**
** The third neuron
**/
subgraph cluster_T2_N1 {
color=lightgrey;
node [style=filled];
label = "Neuron 1";
/**
** The n^th synapse
**/
"T2_N1_S3" [
style=filled
shape=box
color=white
label="Synapse n"
];
/**
** The second synapse
**/
"T2_N1_S2" [
style=filled
shape=box
color=white
label="Synapse 2"
];
/**
** The first synapse
**/
"T2_N1_S1" [
style=filled
shape=box
color=white
label="Synapse 1"
];
"T2_N1_S1" -> "T2_N1_S2" [style=invis];
"T2_N1_S2" -> "T2_N1_S3" [style=invis];
}
label = "Topology 2";
}
}
}
e l'uscita ora sembra più attraente.
uscita:
Ma ora v'è un enorme divario tra le caselle di sinapsi. L'impostazione nodesep=0.1
o len=0.1
non ha alcun effetto. Qualcuno può dirmi come risolvere il problema, o come ridisegnarlo.
NOTA: se qualcuno è curioso del perché io vada da 1 a 2 a n, è perché ho intenzione di inserire un'ellissi, ma non ho idea di come farlo ... attraversa quel ponte quando arrivo ad esso.