Hallo liebe LaTeX-Freunde,

ich versuche einen mittels \addplot coordinates dargestellten Graph in drei Farben zu unterteilen in Abhängigkeit des abgebildeten Intervalls, was mir leider nicht gelingen möchte. Und zwar sieht mein Graph beispielsweise wie folgt aus:

alt text

Open in writeLaTeX
\documentclass[margin=2mm,tikz]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    axis equal image,
    axis lines=middle,
    xmin=-2, xmax=15.5, % Axis limits
    ymin=-2, ymax=11.5,
    xtick={2,7,12},
    ytick=\empty,
  ]
  \addplot[no marks, smooth, samples=500,]
                    coordinates{(1,3) (2,3.5)(7,7)(8,1)(10,4.5)(11,3.5) (12,7.5) (13,8)};
  %  \addplot[no marks, smooth, samples=500,red, restrict x to domain=2:7]
%                   coordinates{(1,3) (2,3.5)(7,7)(8,1)(10,4.5)(11,3.5) (12,7.5) (13,8)};
   % \addplot[no marks, smooth, samples=500,blue, restrict x to domain=7:12]
%               coordinates{(1,3) (2,3.5)(7,7)(8,1)(10,4.5)(11,3.5) (12,7.5) (13,8)};

    \draw[dashed](axis cs:2,0)--(axis cs:2,10);
    \draw[dashed](ax![alt text][2]is cs:7,0)--(axis cs:7,10);
    \draw[dashed](axis cs:12,0)--(axis cs:12,10);
  \end{axis}
\end{tikzpicture}
\end{document}

Im Intervall von 2 bis 7 soll nun mein Graph die Farbe Rot und im Intervall von 7 bis 12 die Farbe Blau annehmen. Meine Idee war es mittels restrict x to domain einfach die einzelnen Teilstücke des Graphen in gewünschter Farbe übereinander abzubilden. Das funktioniert aber nicht wie gewünscht, da dann die smooth Funktion an den Randpunkten der Intervalle nicht mehr beachtet wird und das Ergebnis so aussieht: alt text

Hat hier jemand eine Idee die mich zum Ziel führt?

Dieser Frage ist "Community Wiki" markiert.

gefragt 22 Aug '14, 18:41

Ross's gravatar image

Ross
37591522
Akzeptiert-Rate: 100%


Okay, hab eine Lösung gefunden:

Open in writeLaTeX
\documentclass[margin=2mm,tikz]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\usepgfplotslibrary{fillbetween}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    axis equal image,
    axis lines=middle,
    xmin=-2, xmax=15.5, % Axis limits
    ymin=-2, ymax=11.5,
    xtick={2,7,12},
    ytick=\empty,
  ]
  \addplot[no marks, smooth, samples=500,name path=f]
                    coordinates{(1,3) (2,3.5)(7,7)(8,1)(10,4.5)(11,3.5) (12,7.5) (13,8)};
    \draw[dashed, name path=i2](axis cs:2,0)--(axis cs:2,10);
    \draw[dashed, name path=i7](axis cs:7,0)--(axis cs:7,10);
    \draw[dashed, name path=i12](axis cs:12,0)--(axis cs:12,10);
      \path [
        name path=f2,
        intersection segments={
            of=i2 and f ,
            sequence={B1}
        }];
      \path [
      draw,blue,
        name path=2to7,
        intersection segments={
            of=f2 and i7 ,
            sequence={A0}
        }];
      \path [
        name path=f7,
        intersection segments={
            of=f2 and i7 ,
            sequence={A1}
        }];
      \path [
      draw,red,
        name path=7to12,
        intersection segments={
            of=f7 and i12 ,
            sequence={A0}
        }];
  \end{axis}
\end{tikzpicture}

\end{document}

alt text

Permanenter link

beantwortet 23 Aug '14, 00:58

Ross's gravatar image

Ross
37591522
Akzeptiert-Rate: 100%

@Ross Danke für das Posten der selbst gefundenen Lösung! Schön, dass es geklappt hat. Ich dachte zunächst an eine Möglichkeit mit Definiton von point meta oder einer passend eingestellten colormap. Ein anderes Mal dann vielleicht. :-)

(23 Aug '14, 16:14) stefan ♦♦

Wie lässt sich der Graph einer Funktion in unterschiedliche Farben in MATLAB einteilen?

Permanenter link

beantwortet 30 Jan '15, 17:29

Matlab1's gravatar image

Matlab1
1
Akzeptiert-Rate: 0%

@Matlab1 Wir sprechen hier über LaTeX, bei Matlab könntest Du auf gomatlab.de fragen.

(30 Jan '15, 20:45) stefan ♦♦
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:

×730
×298

gestellte Frage: 22 Aug '14, 18:41

Frage wurde gesehen: 10,057 Mal

zuletzt geändert: 30 Jan '15, 20:45