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, 01:46

TuxedoMask2002's gravatar image

TuxedoMask2002
352
Akzeptiert: 50%

bearbeitet 18 Mär, 09:55

Clemens's gravatar image

Clemens
19.4k113160

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, 13: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, 02: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, 10:07

esdd's gravatar image

esdd
14.4k53451

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:

×186
×14
×7

Frage gestellt: 06 Mär, 01:46

Frage wurde angeschaut: 143 Mal

Zuletzt aktualisiert: 21 Mär, 10:07