Ich würde gerne mehrere Kreise nebeneinander setzen. Jeder Kreis soll dann 2-3 zeilig beschriftet werden.

Mein Minimalbeispiel ist bisher:

Open in Online-Editor
\begin{tikzpicture}  
\draw circle (5mm);  
\node at (0,1) [above=0pt+0pt] {Marktdurchdringungsstrategie};  
\end{tikzpicture}

\begin{tikzpicture}  
\draw circle (5mm);  
\node at (0,1) [above=2pt+3pt] {Marktentwicklungsstrategie};  
\end{tikzpicture}

Leider bekomm ich das mit dem Zeilenumbruch bisher nicht hin, auch sollte die Beschriftung mittig über dem Kreis sitzen. Am Ende soll die rechte Spalte dieses Bildes bei raus kommen:

alt text

gefragt 18 Aug '13, 13:40

BineMaja's gravatar image

BineMaja
99347
Akzeptiert-Rate: 0%

bearbeitet 21 Jun '16, 17:43

saputello's gravatar image

saputello
11.1k154365

(18 Aug '13, 14:09) cgnieder

  • die Node-Option text width legt eine Breite fest und bricht den Text um
  • mit align kann man eine Ausrichtung vorgeben
  • bei einzelnen Wörtern kann man \hspace{0pt} einfügen für die Trennung, da TeX das erste Wort eines Absatzes nicht trennt
  • die Kreise könnte man auch in eine TikZ-Matrix setzen
  • man kann die Kreise als eigene Nodes mit dem circle-Shape erstellen, dann kann man sie durch Linien oder Pfeile besser verbinden und auch die label-Option verwenden.
\documentclass{article}
\usepackage{tikz}
\usepackage[ngerman]{babel}
\begin{document}
\begin{tikzpicture}  
\draw (0,0) circle (3mm) node [above=3mm,text width=2cm,align=center]
    {\hspace{0pt}Marktdurchdringungsstrategie};  
\draw (3,0) circle (3mm) node [above=3mm,text width=2cm,align=center]
    {\hspace{0pt}Marktentwicklungsstrategie};  
\end{tikzpicture}
\end{document}

Ausgabe

Mit einer Matrix zur leichteren Anordnung und zum Referenzieren für Linien:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
  % Matrix der Kreise zeichnen:
  \matrix (m) [matrix of nodes, nodes={circle,draw}, column sep=5em, row sep=4ex]{
    {} &    & {} \\
       & {} &    \\
  };
  % Beschriftungen:
  \foreach \pos/\Text in {1-1/Marktdurchdringungsstrategie,
                          1-3/Marktentwicklungsstrategie,
                          2-2/mehr}
    \path (m-\pos) [late options={label={[align=center, text width=2cm]above:\hspace{0pt}\Text}}];

  % Verbindungslinien:
  \draw (m-1-1) -- (m-1-3);
\end{tikzpicture}
\end{document}

Ausgabe

Permanenter link

beantwortet 18 Aug '13, 14:52

stefan's gravatar image

stefan ♦♦
18.1k143048
Akzeptiert-Rate: 48%

bearbeitet 20 Aug '13, 21:11

Qrrbrbirlbel's gravatar image

Qrrbrbirlbel
2.9k2815

Man kann die labels auch direkt in der Matrix setzen, wenn man die Wirkung des every node-Styles im every label-Style ausgleicht (sprich: rectangle-Shape setzen sowie einen eigenen Namen verwenden name=\tikzmatrixname-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn-label). Sofern man aber nicht die overlay-Option setzt, beeinflussen die Labels auch die Zellen und damit den Abstand zwischen den Kreisen, was dafür sorgt, dass ein kleiner column sep oder row sep nicht dafür sorgt, dass sich Labels überlagern. Man hat dann aber vermutlich keine gitterartige Anordnung mehr.

(21 Aug '13, 05:37) Qrrbrbirlbel

Hey @Qrrbrbirlbel, nach einiger Zeit ist mir ein Problem bei dieser Variante der Verbindungslinien aufgefallen: Wenn ich schräge Linien mache, also von (m-2-3) auf (m-3-1), dann geht die Linie durch meinen Text. Kann man das irgendwie abstellen, also dass die Linie den Text ausspart (wie im Bild oben)? Danke

(09 Dez '13, 17:53) BineMaja

@BineMaja: Ich bin zwar nicht der originale Autor der Antwort, aber nichtsdestoweniger: Das einfachste wäre, die Linien zu erst zu zeichnen und danach die Labels mit fill=white (gerne auch so abgespeichert in dem every label-Style) zu setzen.

Sollen die Linien trotzdem nach den Labels gezeichnet werden, kann man noch die backgrounds-Library mit dem on background layer-Key verwenden. Ohne fill=white kommst du aber kaum aus, wenn du nicht schwerere Geschütze auffahren willst (intersections-Library oder Inverse Clips an Nodes).

(10 Dez '13, 09:51) Qrrbrbirlbel

Use package makecell:

\documentclass[letterpaper]{article}
\usepackage{tikz, makecell}

\tikzstyle{every node}=[anchor=base,outer sep=0.3cm,font=\scriptsize]

\begin{document}

\begin{tikzpicture}[x=1cm,y=1cm]

\draw(1,1) circle (0.2) node[above] {\makecell[bl]{hans\\wurst}};

\draw(4,1) circle (0.2) node[above] {\makecell[bl]{jack\\sausage}};

\draw(7,1) circle (0.2) node[above] {\makecell[bl]{joe\\blow\\show}};

\end{tikzpicture}

\end{document}
Permanenter link

beantwortet 18 Aug '13, 14:25

Michael's gravatar image

Michael
1
Akzeptiert-Rate: 0%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×20
×3

gestellte Frage: 18 Aug '13, 13:40

Frage wurde gesehen: 11,223 Mal

zuletzt geändert: 21 Jun '16, 17:43