Folgendes Problem: Meine Daten, die ich als Punkte in einem Diagramm visualisieren möchte, sind um verschiedene Werte gebündelt. Alle liegen entweder zwischen 45-60, 520-560 und 930-990. Sowohl logarithmisch, als auch linear, finde ich es nicht übersichtlich genug.

Ist es irgendwie möglich, die y-Achse in drei Abschnitte zu teilen, die diesen Intervallen entsprechen und den Rest zu ignorieren (als "..." ausblenden?).

Minimalbeispiel, wie es bisher aussieht:

Öffne in Overleaf
\documentclass{minimal}
\usepackage{tikz}
  \usetikzlibrary{positioning}

\usepackage{pgfplots} % Use tikzpicture for the diagrams
\usetikzlibrary{pgfplots.statistics}
\usetikzlibrary{patterns} 
\usetikzlibrary{calc}
\usetikzlibrary{spy}
\pgfplotsset{compat=1.12}
\begin{document}

% Preamble: \pgfplotsset{width=7cm,compat=1.14}\usepgfplotslibrary{statistics}
\definecolor{RYB1}{RGB}{97,230,1}
\definecolor{RYB2}{RGB}{200,150,250}
\definecolor{RYB3}{RGB}{230,97,1}
\pgfplotscreateplotcyclelist{colorbrewer-RYB}{
{RYB1!50!black,fill=RYB1},
{RYB2!50!black,fill=RYB2},
{RYB3!50!black,fill=RYB3}} %Do not add a comma after the last element of the list!

\begin{tikzpicture}
\begin{axis} [
width=10cm,
height=10cm,
xtick={1,2,3,4,5},
xticklabels={(256,256),(512,512),(1,4,8,14),(1,4,8,355),(2,6,12,116)},
ymin = 0,
ymax = 1100,
%ymode = log,
xlabel={Tube configuration},
x tick label style={rotate=45,anchor=east},
ylabel={Factor of runtime overhead},
ytick={0,50,100,...,1200},
boxplot/draw direction=y,
cycle list name=colorbrewer-RYB,
title style={font=\bfseries, yshift=5.5ex},
align =center,
title={Performance comparison of on-the-fly and reference solver on phase one nodes},
]

% 256 / 256 
\addplot+[boxplot={draw position=1}]
table[row sep=\\,y index=0] {
data\\
918.5634743\\
918.909506\\
918.5904378\\
914.7588818\\
};

\addplot+[boxplot={draw position=1}]
table[row sep=\\,y index=0] {
draw position=1.0,
data\\
236.2160316\\
234.5532821\\
231.726608\\
235.2376498\\
};

\addplot+[boxplot={draw position=1}]
table[row sep=\\,y index=0] {
draw position=1.0,
data\\
63.25559605\\
63.2718865\\
63.25087744\\
62.99359808\\
};

\end{axis}
\end{tikzpicture}
\end{document}

Das ganze soll nachher ungefähr so aussehen (dann am besten auch boxplots statt Punktmengen):

alt text

gefragt 06 Mär '17, 07:46

TuxedoMask2002's gravatar image

TuxedoMask2002
3524
Akzeptiert-Rate: 0%

bearbeitet 18 Mär '17, 14:55

cgnieder's gravatar image

cgnieder
22.1k253463

Wahrscheinlich sollte man auf der y-Achse solche Lücken einbauen, die mit solchen tildenartigen Schleifchen angedeutet werden. Bei TikZ kann ich mir vorstellen, wie ich es mache; bei 'pgfplots', was Du verwendest (!) habe ich gerade keine konkrete Idee.

(07 Mär '17, 19:36) cis

@cis: Zeig doch einfach eine Lösung nur mit TikZ also ohne pgfplots als Alternative. Das würde Tuxedo vermutlich auch schon weiterhelfen.

Ich selbst habe zwar versucht, mehrere Plots (die oberen beiden ohne x-Achse) mit pgfplots passen übereinander zu packen, habe mich dabei aber offenbar zu dämlich angestellt und es nicht hinbekommen. Meine Idee mit einer Verschiebung auf der y-Achse zu arbeiten, ist leider auf ähnliche Weise gescheitert.

(20 Mär '17, 07:55) saputello

Als Ansatz: Ich würde mehrere axis Umgebungen übereinander legen. Dabei sollten die Achsen möglichst nur einmal gezeichnet und die Beschriftungen jeweils nur einmal vorgenommen werden. Damit die Position die Koordinaten an der x-Achse immer an der selben Stelle sind, nehme ich die Einstellungen für alle axis Umgebungen über \pgfplotsset am Anfang der tikzpicture Umgebung vor. Dann müssen nur noch jeweils die gewünschten Werte für ytick und geeignet gewählte ymin und ymax angegeben werden:

Öffne in Overleaf
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots} % lädt auch tikz
\pgfplotsset{compat=1.12}% aktuell wäre derzeit 1.14
\usepgfplotslibrary{statistics}

\definecolor{RYB1}{RGB}{97,230,1}
\definecolor{RYB2}{RGB}{200,150,250}
\definecolor{RYB3}{RGB}{230,97,1}

\pgfplotscreateplotcyclelist{colorbrewer-RYB}{
{RYB1!50!black,fill=RYB1},
{RYB2!50!black,fill=RYB2},
{RYB3!50!black,fill=RYB3}} %Do not add a comma after the last element of the list!

\begin{document}
\begin{tikzpicture}
% einheitliche Einstellungen für alle axis Umgebungen in dieser Zeichnung
  \pgfplotsset{
    width=10cm,
    height=10cm,
    xtick={1,2,3,4,5},
    xticklabels={(256,256),(512,512),(1,4,8,14),(1,4,8,355),(2,6,12,116)},
    x tick label style={rotate=45,anchor=east},
    xmin=1,xmax=5,
    enlarge x limits=.15,
    boxplot/draw direction=y,
    cycle list name=colorbrewer-RYB,
    %align=center,
    title style={font=\bfseries, yshift=5.5ex},
    table/row sep=\\,
    no axis/.style={%
        axis line style={draw=none},
        xtick style={draw=none},
        xticklabels=\empty
    }
  }
  \begin{axis} [
    ymin = 850,
    ymax = 930,
    ytick={910,915,...,925},
    %
    xlabel={Tube configuration},
    ylabel={Factor of runtime overhead},
    title={Performance comparison of on-the-fly and reference solver on phase one nodes}
  ]
  % 256 / 256 
  \addplot+[boxplot={draw position=1}]
    table[y index=0] {
      data\\
      918.5634743\\
      918.909506\\
      918.5904378\\
      914.7588818\\
    };
  \end{axis}
%
  \begin{axis} [
    no axis,
    ymin = 192.5,
    ymax = 272.5,
    ytick={225,230,235,240},
    cycle list shift=1
  ]
  % 256 / 256 
  \addplot+[boxplot={draw position=1}]
    table[y index=0] {
    data\\
    236.2160316\\
    234.5532821\\
    231.726608\\
    235.2376498\\
    };
  \end{axis}
%
  \begin{axis} [
    no axis,
    ymin = 45,
    ymax = 135,
    ytick={50,55,60,65},
    cycle list shift=2
  ]
  % 256 / 256
  \addplot+[boxplot={draw position=1}]
    table[y index=0] {
      data\\
      63.25559605\\
      63.2718865\\
      63.25087744\\
      62.99359808\\
    };
  \end{axis}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 21 Mär '17, 15:07

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

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:

×298
×30
×18

gestellte Frage: 06 Mär '17, 07:46

Frage wurde gesehen: 8,200 Mal

zuletzt geändert: 21 Mär '17, 15:07