Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: Figur zeichnen

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.09.2012
    Beiträge
    98

    Figur zeichnen

    Hallo

    Ich würde in Latex gerne eine Figur wie im Bild im Anhang zeichnen. Das zweite Rechteck sowie der Pfeil zuunterst sollte gestrichelt sein.

    Ich habe zwar mit Latex schon etwas Erfahrung, allerdings nicht mit solchen Sachen zeichnen. Könnte da vielleicht jemand kurz helfen? Wäre sehr nett.

    Vielen Dank!
    Geändert von Helveticus (02-06-2014 um 11:11 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.328
    Auf TeXample gibt es diverse Beispiele für Block- oder Ablaufdiagramme.

    Gestrichelte Linien macht man bei Tikz in der Regel über die Eigenschaft dashed. Näheres dazu verrät das pgfmanual.
    Geändert von klops (02-06-2014 um 12:24 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Da du bereits mit pgfplots und auch mit tikz gearbeitet hast, sollte es dir möglich sein, dafür wenigstens einen Ansatz zu erstellen. Das Beispiel sieht außerdem recht überschaubar aus, so dass es sich als Einstieg ganz gut eignet. Wenn dann noch Fragen offen sind und du hier zeigst, wie weit du selbst gekommen bist, dann hilft dir bestimmt jemand weiter.

    Gruß
    Elke

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.09.2012
    Beiträge
    98
    So ich konnte es jetzt fast selber lösen, aber eben nur fast. Ich habe noch drei kleine Probleme:

    1. Der Abstand zwischen dem unteren Pfeil (von Output nach Input) und den Blöcken sollte kleiner sein. Dazu muss ich wohl die Position von der tmp coordinate verändern, aber ich weiss nicht wie.

    2. Ich wurde gerne auf dem unteren Pfeil noch ein Text stehen haben, z.B. "test".

    3. Ich habe das Diagramm in ein separates File gepackt und dann mittels figure eingebunden. Mein Dokument hat zwei Spalten. Leider geht das Diagramm über beide Spalten, es sollte allerdings auf eine Splate skaliert werden. Wie geht das?

    Hier jetzt ein Minimalbeispiel:

    Zuerst die flowchart.tex
    \tikzstyle{block} = [draw, fill=blue!20, rectangle,
    minimum height=3em, minimum width=6em]
    \tikzstyle{input} = [coordinate]
    \tikzstyle{output} = [coordinate]
    \tikzstyle{pinstyle} = [pin edge={to-,thin,black}]

    \begin{tikzpicture}[auto, node distance=4cm,>=latex']
    % Placing the blocks
    \node [input, name=input] {};
    \node [block, right of=input] (controller) {Controller};
    \node [block, right of=controller,node distance=3cm] (system) {System};
    \node [block, right of=system,node distance=3cm] (system2) {System2};
    \node [output, right of=system2] (output) {};
    \coordinate [below of=system] (tmp);

    % Connecting the nodes
    \draw [draw,->] (input) -- node [name=r] {$Input$} (controller);
    \draw [->] (controller) -- node[name=u] {} (system);
    \draw [->] (system) -- node[name=u] {} (system2);
    \draw [->] (system2) -- node [name=y] {$Output$}(output);
    \draw [->] (y) |- (tmp) -| (r);
    \end{tikzpicture}
    Und die Hauptdatei
    \documentclass[10pt,conference,compsocconf]{IEEEtran}

    %\usepackage{times}
    %\usepackage{balance}
    \usepackage{url}
    \usepackage{graphicx} % For figure environment
    \usepackage{xcolor} % For colored text
    \usepackage{pdfpages}
    \usepackage{tikz}
    \usetikzlibrary{shapes,arrows}

    \begin{document}
    \title{This is a title}

    \maketitle

    \begin{abstract}
    \vspace{3cm}
    \end{abstract}

    \section{Introduction}
    \label{sec:introduction}

    \begin{figure}[h]
    \centering
    \input{flowchart}
    \caption{The system.}
    \label{flowchart}
    \end{figure}

    \end{document}

  5. #5
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    1. Den Abstand hast du mit node distance für die gesamte Abbildung vorgegeben. Ändere ihn für die Koordinate tmp mit

    Code:
    \coordinate [node distance=2cm,below of=system,label=above:{test}] (tmp);
    2. Mit dem oben eingefügten Label hast du auch gleich den Text auf der Linie.

    3. Das Bild ist einfach zu groß für eine Spalte. Skalieren kannst du mit

    Code:
    \resizebox{\columnwidth}{!}{\input{flowchart}}
    Allerdings fügst du in deiner flowchart.tex einige zusätzliche Leerzeichen ein. Entweder du fügst an den Zeilenenden hinter \tikzstyle Kommentarzeichen ein und kommentierst die Leerzeile vor \begin{tikzpicture} aus oder du verwendest

    Code:
    \begin{tikzpicture}[
        block/.style={draw, fill=blue!20,minimum height=3em, minimum width=6em},
        input/.style={coordinate},
        output/.style={coordinate},
        auto,
        node distance=4cm,
        >=latex'
      ]
    % Placing the blocks
    \node [input, name=input] {};
    \node [block, right of=input] (controller) {Controller};
    \node [block, right of=controller,node distance=3cm] (system) {System};
    \node [block, right of=system,node distance=3cm] (system2) {System2};
    \node [output, right of=system2] (output) {};
    \coordinate [node distance=2cm,below of=system,label=above:{test}] (tmp);
    %
    % Connecting the nodes 
    \draw [draw,->] (input) -- node [name=r] {$Input$} (controller);
    \draw [->] (controller) -- node[name=u] {} (system);
    \draw [->] (system) -- node[name=u] {} (system2);
    \draw [->] (system2) -- node [name=y] {$Output$}(output);
    \draw [->] (y) |- (tmp) -| (r);
    \end{tikzpicture}%
    Gruß
    Elke

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.09.2012
    Beiträge
    98
    Ich danke dir tausend Mal Elke, hat alles wunderbar geklappt.

    Nur so aus neugier, wie würde man das eigentlich machen, wenn ich es über zwei Kolonnen möchte? Bei mir ist es dann nämlich nicht zentriert obwohl ich ein \centering drin habe.

    Code:
    \begin{figure}[h]
    \centering
    \input{flowchart}
    \caption{The system.}
    \label{flowchart}
    \end{figure}

    Und wie macht man es, dass es die gesamte Breite (zwei Kolonnen) einnimmt und die Höhe dann entsprechend angepasst wird damit es nicht verzerrt? Ich brauche das sehr wahrscheinlich später, allerdings dann für eine \includegraphics in einer figure Umgebung.
    Geändert von Helveticus (07-06-2014 um 20:15 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Wenn die Abbildung über beide Spalten gehen soll, dann verwende die figure* Umgebung und lasse die Platzierungsparameter weg. Eventuell hilft dir auch Wie platziere ich im zweispaltigen Satz eine seitenbreite Tabelle auf der aktuellen Seite?

    Wenn du auf die gesamte Textbreite skalieren willst, dann nimm \textwidth statt \columnwidth. Das ! im zweiten Argument sorgt dafür, dass die Höhe passend skaliert wird. Alternativ könntest du in beiden Fällen \linewidth verwenden. Dann würde die Abbildung in einer figure Umgebung auf die Spaltenbreite skaliert und in einer figure* Umgebung auf Textbreite. Siehe auch Worin besteht der Unterschied zwischen \textwidth und \linewidth?

    Gruß
    Elke

  8. #8
    Registrierter Benutzer
    Registriert seit
    23.09.2012
    Beiträge
    98
    Vielen Dank Elke. Ich werde es ausprobieren. Falls es Probleme gibt, melde ich mich wieder.

  9. #9
    Registrierter Benutzer
    Registriert seit
    23.09.2012
    Beiträge
    98
    Jetzt habe ich doch noch zwei kleine Probleme. Und zwar habe ich ja einen zweispaltigen Textsatz.

    1. Ich habe zwei Bilder (.png), welche ich nebeneinander stehen haben möchte. Also Bild 1 in Spalte 1 und Bild 2 in Spalte 2 direkt daneben. Wie geht das? Muss ich da beide Bilder zu einem Bild zusammenfügen und das dann über die ganze Breite einfügen? Allerdings sollten beide Bilder schon die Spaltengrenzen nicht überschreiten.

    2. Ich habe mehrere kleinere Bilder welche ich als eine Art horizontaler Vektor einfügen möchte. D.h. die Bilder sollten alle horizontal nebeneinander stehen und die ganze Breite füllen (die Spaltengrenzen müssen hier nicht beachtet werden). Jedes Bild sollte noch eine caption haben und das gesamte Bild, also alle images zusammen sollten auch eine caption haben, einfach in etwas grösserer Schrift als die caption der einzelnen Bilder.

    Wie geht das?

  10. #10
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hier ist ein Vorschlag für den ersten Teil deiner Frage. Bitte beachte dazu auch die beiden Links aus meinem vorhergehenden Post.

    Code:
    \documentclass[10pt,conference]{IEEEtran}
    
    \usepackage{graphicx}
    \usepackage{caption}
    \usepackage{subcaption}
    
    \usepackage{blindtext}% Besipieltext
    \usepackage{mwe}% für example-image
    \usepackage{showframe}% Anzeige der Seitenaufteilung
    \begin{document}
    \title{This is a title}
    
    \maketitle
    
    \begin{abstract}
    \blindtext
    \end{abstract}
    
    \section{Introduction}
    \label{sec:introduction}
    \Blindtext[5]
    
    \begin{figure*}
    \begin{minipage}{\columnwidth}
    \centering
    \includegraphics[width=\linewidth]{example-image}
    \captionof{figure}{erstes Bild}
    \end{minipage}\hfill
    \begin{minipage}{\columnwidth}
    \centering
    \includegraphics[width=\linewidth]{example-image}
    \captionof{figure}{zweites Bild}
    \end{minipage}
    \end{figure*}
    
    \Blindtext[8]
    
    \end{document}
    Für deine zweite Frage kannst du das Paket subcaption nutzen. Schau dazu einfach in dessen Doku.

    Gruß
    Elke
    Geändert von esdd (17-06-2014 um 19:18 Uhr)

  11. #11
    Registrierter Benutzer
    Registriert seit
    23.09.2012
    Beiträge
    98
    Vielen, vielen Dank Elke.

    Noch eine kleine Off-topic Frage.

    Ich benutze \documentclass[10pt,conference,compsocconf]{IEEEtran} und habe den Font nicht weiter spezifiziert. Welcher Font wird denn da standardmässig verwendet? Ich möchte nämlich Grafiken, die ich einfüge, im selben Font machen.

  12. #12
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Ort
    Wrestedt
    Beiträge
    987

    ...

    Zitat Zitat von Helveticus Beitrag anzeigen
    Vielen, vielen Dank Elke.

    Noch eine kleine Off-topic Frage.

    Ich benutze \documentclass[10pt,conference,compsocconf]{IEEEtran} und habe den Font nicht weiter spezifiziert. Welcher Font wird denn da standardmässig verwendet? Ich möchte nämlich Grafiken, die ich einfüge, im selben Font machen.
    Hallo Helveticus,

    schaumal hier:
    http://tex.stackexchange.com/questio...latex-document

    Viel Erfolg

    Gruß

    Martin
    Der aus Büchern erworbene Reichtum fremder Erfahrung heißt Gelehrsamkeit. Eigene Erfahrung ist Weisheit. Das kleinste Kapital von dieser ist mehrt wert, als Millionen von jener.

    Gotthold Ephraim Lessing

  13. #13
    Registrierter Benutzer
    Registriert seit
    23.09.2012
    Beiträge
    98
    Hat auch wunderbar geklappt, vielen Dank. Ich verwende hier Times.

    Bei meiner obigen flowchart.tex sind die Boxen ja mit blauem Hintergrund. Wie mache ich das wenn ich bei einer Box möchte, dass der Hintergrund blau gepunktet oder gestrichelt ist und zudem die schwarze Umrahmung der Box schwarz gestrichelt ist?

  14. #14
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Für den gestrichelten Rand gibt es die Option dashed und für einen gepunkteten Hintergrund musst du die tikzlibrary patterns laden und dann zum Beispiel pattern=dots und pattern color=blue!20 verwenden. Das findet man aber alles im pgfmanual.

    Gruß
    Elke

  15. #15
    Registrierter Benutzer
    Registriert seit
    23.09.2012
    Beiträge
    98
    Ich danke dir Elke, hat super geklappt.

    Ein letzte Problem habe ich noch und zwar beziehe ich mich jetzt auf den obigen Code:

    Code:
    \documentclass[10pt,conference]{IEEEtran}
    
    \usepackage{graphicx}
    \usepackage{caption}
    \usepackage{subcaption}
    
    \usepackage{blindtext}% Besipieltext
    \usepackage{mwe}% für example-image
    \usepackage{showframe}% Anzeige der Seitenaufteilung
    \begin{document}
    \title{This is a title}
    
    \maketitle
    
    \begin{abstract}
    \blindtext
    \end{abstract}
    
    \section{Introduction}
    \label{sec:introduction}
    \Blindtext[5]
    
    \begin{figure*}
    \begin{minipage}{\columnwidth}
    \centering
    \includegraphics[width=\linewidth]{example-image}
    \captionof{figure}{erstes Bild}
    \end{minipage}\hfill
    \begin{minipage}{\columnwidth}
    \centering
    \includegraphics[width=\linewidth]{example-image}
    \captionof{figure}{zweites Bild}
    \end{minipage}
    \end{figure*}
    
    \Blindtext[8]
    
    \end{document}

    Der klappt auch ganz wunderbar, d.h. ich habe jetzt zwei Bilder nebeneinander, die über die gesamte Spalte gehen. Nun möchte ich aber noch ein drittes Bild und zwar unter dem linken Bild in der linken Spalte.

    Ich habe keine Ahnung wie ich das sauber machen könnte. Wenn ich es in die obige figure Umgebung einfüge, dann wird es über die gesamten Zwei Spalten gestreckt.

    Kannst du mir da helfen?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •