Wie kann ich mehrere Beschriftungen übereinander setzen?
Am Ende soll es dann aussehen wie hier:
bei der 3. Zeile Massenmarktstrategie sollte drüber stehen (am besten auch mittig) und drunter bei den jeweiligen Kreisen total und partial.
Minimalbeispiel:
Code, hier editierbar zum Übersetzen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\begin{tikzpicture}
% Matrix der Kreise zeichnen:
\matrix (m) [matrix of nodes, nodes={circle,draw}, column sep=5em, row sep=2cm]{
Je nachdem, wie du sie genau platzieren willst (mittig über was?), kannst du die calc-Library oder einfach nur: \path (m-3-1.north east) -- node[above] {Massenmarktstrategie} (m-3-3.north west); Ah, ich sehe gerade, dass die Nodes in der Matrix die Kreise sind, nicht die Beschriftungen. Also benenne die Nodes auch nochmal und benutze sie dann als Referenz.
@BineMaja Es wird vermutlich getrennt, weil du es noch in dem Scope mit dem text width=2cm verwendest, oder? Das sollte außerhalb, also nach dem Scope, nicht passieren. Mein „mittig über was” ist hier irrelevant, da alle Nodes ja eh die gleiche Breite haben.
Das einfachste wäre es, die Beschriftungen als label hinzuzufügen (kein Raten des above-Werts nötig und man kann global die label position sowie die label distance angeben) und diesen Namen zu geben, die dann wiederum verwendet werden können um ein weiteres Label hinzuzufügen.
mithilfe der calc-Library, da standardmäßig ein midway (pos=.5) for Nodes entlang des Pfades gilt.
Mithilfe der fit-Library kann das Ganze auch wieder als label gesetzt werden, wenn man eine unsichtbare Nodes eng (seps auf null) um die bereits vorhandenen Labels setzt:
Eine weitere Möglichkeit bietet meine positioning-plus-Library, die intern auch die fit-Library benutzt, und zwar kann man hier die Keys der positioning-Library für eine Pseudo-Node verwenden, die sich (eben wie fit) um die angegeben Nodes schließt.
1
\node[above=0pt of (m-3-1-label)(m-3-3-label)] {Massenmarktstrategie};
Das sieht genauso aus wie ich es haben will :)
Habe den Code bei mir eingefügt, nur leider spuckt es bei mir einen Fehler aus:
! Undefined control sequence.
<argument> m-pos
l.31 path (m-pos)
[late options={label={[name=m-pos-label]Text}}];
The control sequence at the end of the top line of your error message was never def'ed. If you have misspelled it (e.g., \hobx'), typeI' and the correct spelling (e.g., `Ihbox'). Otherwise just continue, and I'll forget about whatever was undefined.
! Package pgf Error: No shape named m- is known.
@BineMaja Ein Tipp, du kannst das gleiche Markdown in den Kommentaren verwenden wie in Fragen und Antworte, sprich: Ein `Gravis` markiert Inline-Code.: Ein Gravis markiert Inline-Code. (Und zwei Gravise können verwendet werden, um einzelne zu schützen.) Oder du verwendest die typischen vier Leerzeichen vor Zeilen um Blockcode zu erstellen.
Es sieht so aus, als würdest du in der Definition der \foreach-Variablen ein anderes Makro als in der Schleife selbst verwenden.
Der Fehler wird bestimmt ersichtlich, wenn du die ganze Schleife postest.
Je nachdem, wie du sie genau platzieren willst (mittig über was?), kannst du die
calc
-Library oder einfach nur:\path (m-3-1.north east) -- node[above] {Massenmarktstrategie} (m-3-3.north west);
Ah, ich sehe gerade, dass die Nodes in der Matrix die Kreise sind, nicht die Beschriftungen. Also benenne die Nodes auch nochmal und benutze sie dann als Referenz.Wie in dem Bild mittig über m-3-1 und m-3-2 Dein Vorschlag sieht schon gut ganz gut, wenn hier das Wort dann nicht getrennt werden würde.
@BineMaja Es wird vermutlich getrennt, weil du es noch in dem Scope mit dem
text width=2cm
verwendest, oder? Das sollte außerhalb, also nach dem Scope, nicht passieren. Mein „mittig über was” ist hier irrelevant, da alle Nodes ja eh die gleiche Breite haben.