Öffne in Overleaf
\documentclass{beamer}
\usetheme{CambridgeUS}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb,theorem, graphics, graphicx, wrapfig,relsize} 
\usepackage{textcomp}
\usepackage{tikz}
\usepackage{caption}
\usetikzlibrary{decorations.pathreplacing}
\usepackage{mathrsfs}
\usepackage{yfonts}
\usepackage{enumerate}
\usepackage{dsfont}
\usepackage{setspace} %für Zeilenabstände
\usepackage{fancyhdr}
\usetikzlibrary{arrows,positioning}

\begin{document}

\title{Test}   
\author{runix}

%\logo{\includegraphics[scale=0.14]{logo-SF}}

\begin{frame}
\titlepage
\end{frame}

\begin{frame}\frametitle{Test} 
\begin{figure}
\centering
\begin{tikzpicture}[node distance=1cm, auto]  
\tikzset{
    mynode/.style={rectangle,rounded corners,draw=black, top color=white, bottom color=yellow!50,very thick, inner sep=1em, minimum size=3em, text centered},
    myarrow/.style={->, >=latex', shorten >=1pt, thick},
    mylabel/.style={text width=7em, text centered} 
}  
\node[mynode] (manufacturer) {MANUFACTURER};  
\node[below=3cm of manufacturer] (dummy) {}; 
\node[mynode, left=of dummy] (retailer1) {RETAILER 1};  
\node[mynode, right=of dummy] (retailer2) {RETAILER 2};
\node[mylabel, below left=of manufacturer] (label1) {Participation rate $\theta_1$};  
\node[mylabel, below right=of manufacturer] (label2) {Participation rate $\theta_2$};
% The text width of 7em forces the text to break into two lines.

\draw[myarrow] (manufacturer.south) -- ++(-.5,0) -- ++(0,-1) -|  (retailer1.north); 
\draw[myarrow] (manufacturer.south) -- ++(.5,0) -- ++(0,-1) -|  (retailer2.north);
% There is a slight overlap of the arrows with the (manufacturer) south edge
% because creating the offset in another way didn't compile.

\draw[<->, >=latex', shorten >=2pt, shorten <=2pt, bend right=45, thick, dashed] 
    (retailer1.south) to node[auto, swap] {Competition}(retailer2.south); 
% The swap command corrects the placement of the text.

\end{tikzpicture} 
\medskip
%\caption{Structure of the Market} 
\end{figure}
\end{frame}

\end{document}

Ausgangspunkt ist obiges Beispiel von texample. Ich würde es aber gerne verstehen um daran basteln zu können.

Wie kriege ich es z. B. hin, dass der MANUFACTURER Kasten unten steht? Und wie kann ich die Größe der Kästchen, unabhängig von der Textgröße, modifizieren? Ist die arrow library überhaupt das Richtige? Ich muss mehrere Schaubilder dieser Art produzieren.

gefragt 09 Mär, 16:32

runix's gravatar image

runix
5391947
Akzeptiert: 48%

bearbeitet 10 Mär, 04:40

saputello's gravatar image

saputello
19.2k22455

Das sind doch wieder mehrere Fragen auf einmal. :(

(10 Mär, 04:40) saputello
1

Das Beispiel platziert zunächst Knoten mit Inhalt (und im Fall von dummy auch ohne Inhalt) relativ zueinander und verbindet diese dann mit Linien und Pfeilen, wobei die Namen der Knoten verwendet werden. Wenn der Kasten mit MANUFACTURER unten stehen soll, sollen dann das ganze quasi auf den Kopf gestellt werden? Dann überleg mal, was below=3cm of manufacturer beim Knoten mit dem Namen dummy wohl bedeutet. Stelle Vermutungen an, wie Du das passend ändern könntest und lies in der Anleitung nach, ob das wohl stimmt. Bei konkreten Problem damit frag konkret nach.

(10 Mär, 04:44) saputello

Fragen zur Größe von Nodes hatten wir bestimmt schon. Such mal danach.

(10 Mär, 04:44) saputello
1

Wie man in Abschnitt 40 der pgf-Anleitung erfährt, ist die arrow Library veraltet. Trotzdem erfährt man in der Anleitung noch, wozu die einmal da war.

(10 Mär, 04:47) saputello

Wenn sie veraltet ist, was benutzt man stattdessen?

(10 Mär, 04:57) runix

Abschnitt 40 der pgf-Anleitung habe ich nicht extra herausgesucht und erwähnt, weil ich zu viel Zeit übrig habe sondern obwohl meine Zeit wertvoll ist.

(10 Mär, 05:38) saputello
Ergebnis 5 von 6 Alle anzeigen

Das Grundprinzip der Grafik ist, Knoten (teils mit, teils ohne Text) via positioning-Bibliothek relativ zueinander zu platzieren und dann im nächsten Schritt, diese Knoten mit Pfeilen zu verbinden, wobei für die Start- und Endpunkte der Pfeile die Namen der Positionen an den Knoten verwendet werden. Dazu werden die Knoten selbst ebenfalls mit Namen wie manufacturer und dummy versehen. So sind Positionen wie manufacturer.south, also die Südgrenze des Knotens manufacturer, möglich.

Leider ist die (von saputello explizit gestellte) Frage offen geblieben, wie genau das ganze am Ende aussehen soll. Ich gehe daher davon aus, dass das Bild quasi auf den Kopf gestellt werden soll. Da die Platzierung der Knoten zueinander über die positioning Bibliothek relativ zueinander erfolgt, ist es nicht weiter schwer, diese umzukehren. In der Definition der Knoten wird aus below dann above, aus south wird north und umgekehrt. Näheres zu den Angaben ist der Anleitung zur Bibliothek innerhalb der pgf-Anleitung zu erfahren.

Außerdem muss beim Zeichnen der Pfeile zwischen den Knoten das eine oder andere Vorzeichen umgekehrt werden und ggf. die Schriftplatzierung am gebogenen Pfeil, die mit swap explizit unter dem Pfeil angefordert wurde, nun besser ohne swap über dem Pfeil erfolgen.

Bei der Gelegenheit habe ich auch gleich die veraltete arrows-Bibliothek durch arrows.meta ersetzt, wie das in der pgf-Anleitung im Abschnitt zur arrows-Bibliothek erwähnt wird. Es ergibt sich dann beispielsweise der Code:

Öffne in Overleaf
\documentclass{beamer}
\usetheme{CambridgeUS}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning}

\begin{document}

\begin{frame}\frametitle{Test} 
\begin{figure}
\centering
\begin{tikzpicture}[node distance=1cm, auto]  
\tikzset{
    mynode/.style={rectangle,rounded corners,draw=black, top color=white,
      bottom color=yellow!50,very thick, inner sep=1em, minimum size=3em, text
      centered},
    myarrow/.style={-{Stealth}, shorten >=1pt, thick},
    mylabel/.style={text width=7em, text centered} 
}  
\node[mynode] (manufacturer) {MANUFACTURER};  
\node[above=3cm of manufacturer] (dummy) {}; 
\node[mynode, left=of dummy] (retailer1) {RETAILER 1};  
\node[mynode, right=of dummy] (retailer2) {RETAILER 2};
\node[mylabel, above left=of manufacturer] (label1) {Participation rate $\theta_1$};  
\node[mylabel, above right=of manufacturer] (label2) {Participation rate $\theta_2$};
% The text width of 7em forces the text to break into two lines.

\draw[myarrow] (manufacturer.north) -- ++(-.5,0) -- ++(0,1) -|  (retailer1.south); 
\draw[myarrow] (manufacturer.north) -- ++(.5,0) -- ++(0,1) -|  (retailer2.south);
% There is a slight overlap of the arrows with the (manufacturer) south edge
% because creating the offset in another way didn't compile.

\draw[{Stealth}-{Stealth},
  shorten >=2pt, shorten <=2pt, 
  bend right=-45, 
  thick, dashed] 
    (retailer1.north) to node[auto] {Competition}(retailer2.north);

\end{tikzpicture} 
\medskip
\end{figure}
\end{frame}

\end{document}

mit dem Ergebnis

alt text

Die Größe der Knoten ist im Beispiel übrigens über ihre Minimalgröße (minimum size) und den inneren Rand inner sep gegeben. Es gibt dafür weitere mögliche Optionen wie text width. Bei Verwendung vn text width wird für den Knoten dann eine \parbox verwendet, so dass der Text ggf. auch auf mehrere Zeilen umbrochen wird. Die Definition von mylabel zeigt dies.

Permanenter link

beantwortet 13 Mär, 04:10

Ijon%20Tichy's gravatar image

Ijon Tichy
5.0k618

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×509
×52
×18
×1

Frage gestellt: 09 Mär, 16:32

Frage wurde angeschaut: 160 Mal

Zuletzt aktualisiert: 13 Mär, 04:10