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): gefragt 06 Mär '17, 07:46 TuxedoMask2002 cgnieder |
Als Ansatz: Ich würde mehrere Ö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} beantwortet 21 Mär '17, 15:07 esdd |
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.
@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.