alt text

Ich habe einen Plot, der mir die Dimensionen des Schaubilds festlegt:

Öffne in Overleaf
% Plot Legt Dimensionen fest
\addplot+[]
table[header=true]{ % SOLL x expr ={\xMax}
x  y
1 2
3 4
};

Nun habe ich einen zweiten Plot, der Daten enthält, die alle an der selben Stelle stehen soll (klingt komisch hat aber Sinn): x expr =\xAlias, y expr=\yAlias

Öffne in Overleaf
% Aliaswerte
\pgfmathsetmacro{\xAlias}{2}
\pgfmathsetmacro{\yAlias}{1}

% Plot dient nur für Annotationen
\addplot+[nodes near coords={\xAlias,\yAlias}]
table[header=true, x expr =\xAlias, y expr=\yAlias]{ % 
a
1
2
3
};

Frage: Wie kann ich Werte xAlias, yAlias automatisch auslesen und dafür sorgen, dass xAlias, yAlias in allen Fällen innerhalb der durch den 1. Plot festgelegten Dimensionen liegen?

Ich hatte an sowas wie den Mittelwert aus xmin, xmax bzw. ymin, ymax gedacht. Aber die Max- und Minwerte sind vor Abschluss aller Plots scheints nicht verarbeitbar.

Vollständiges MWE:

alt text

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}

\begin{document}

\begin{tikzpicture}
\begin{axis}[]

\pgfkeysgetvalue{/pgfplots/xmin}{\xmin}
\pgfkeysgetvalue{/pgfplots/xmax}{\xmax}

% Plot Legt Dimensionen fest
\addplot+[]
table[header=true]{ % SOLL x expr ={\xMax}
x  y
1 2
3 4
};

% Aliaswerte
\pgfmathsetmacro{\xAlias}{2}
\pgfmathsetmacro{\yAlias}{1}

% Plot dient nur für Annotationen
\addplot+[nodes near coords={\xAlias,\yAlias}]
table[header=true, x expr =\xAlias, y expr=\yAlias]{ % 
a
1
2
3
};

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

gefragt 20 Sep '18, 22:27

cis's gravatar image

cis
9.5k92459491
Akzeptiert-Rate: 29%

bearbeitet 20 Sep '18, 22:57

Wozu soll das gut sein? Du zeichnest einen Plot, der lediglich aus einer einzigen Koordinate besteht. Eine \node mit dem entsprechenden plotmark und den labels tut das selbe.

(20 Sep '18, 22:52) Community

Den Sinn muss man hier nicht verstehen. Mir geht es einfach nur darum automatisch Werte zu finden, die in allen Fällen innerhalb der Dimensionen liegen und diese in einem weiteren Plot, der die Dimensionen nicht vergrößert, zu verwenden.

(20 Sep '18, 22:56) cis

Aber das kannst Du doch mit einer node machen, halt bloss nicht mit addplot...

(21 Sep '18, 00:04) Community

Doch, es muss zwingend ein addplot sein.

(21 Sep '18, 00:28) cis

Wie Du die Maxima und Minima von Tabellen rausfindest, ist beispielsweise hier beschrieben...

(21 Sep '18, 00:51) Community

Ja, das ist eine gute Methode. Habe ich glaub sogar schonmal benutzt. Jetzt kommt wieder das (teils bughafte) Problem, dass es addplots gibt, die nur Inlinetables zulassen. Aber der Hinweis: https://tex.stackexchange.com/questions/55349/how-can-i-automatically-mark-local-extrema-with-pgfplots-and-scatter könnte gehen.

(21 Sep '18, 02:55) cis

Glaub ich nicht, siehe meinen Kommentar zu Deiner anderen Frage. In dem Link dort wird genau das versucht, woran Du gerade zu denken scheinst.

(21 Sep '18, 03:12) Community

Vielleicht erklärt das, wieso ich gerade nur den maximalen x-Wert, nicht aber den maximalen y-Wert auslesen kann. Weil das so ein meta-irgendwas ist..

(21 Sep '18, 04:02) cis

Also ich verstehe das nicht. Ich schaffe es schon xMax, yMax rauszulesen und anzuzeigen in einer node.

Aber nicht als x expr zu verwenden...

visualization depends on={x \as \xvalue}, visualization depends on={y \as \yvalue}, scatter/@pre marker code/.code={% \ifx\pgfplotspointmeta\pgfplots@metamax \global\let\xMax=\xvalue \global\let\yMax=\yvalue

Mal wieder so ein scheinbar einfaches Problem...

(21 Sep '18, 04:31) cis

Auch auf die Gefahr hin, mich zu wiederholen: pgfplots grast alle Plots ab, und setzt die Werte erst dann fest. Siehe das Statement auf S. 332: "These values are not only the input: after the survey phase, their values will be overwritten with the resulting computed values. These may differ according to enlargelimits or scale mode." D.h. Du kannst sie definitv nicht in Plots verwenden, jedoch schon in all dem, was danach kommt wie nodes. Was Du natürlich schon machen kannst, ist einen TikZ Plot mit \draw plot... einzufügen, evtl. erst nach der axis.

(21 Sep '18, 06:04) Community

Mmmhhh, ich dachte, das ist so ein "Saveproblem", was man ggf. mit Saveboxen o.ä. lösen kann. Klar, die klassischen Methoden sind bekannt.

(21 Sep '18, 06:12) cis

Du kannst einen Plot erst mal in eine savebox schuster, dort rausfinden, was die Werte sind, und dann einen richtigen Plot mit diesen Werten bauen. Extrem umständlich. Letztlich suchst Du nach einem Analogon von \fmffreeze von feynmp, aber so weit ich weiss, gibt es das nicht.

(21 Sep '18, 06:40) Community

Ich habe es jetzt so gelöst

` % Möglichst eingeben: xdefBeliebigesVorhandenesKoordinatenpaar{{-1.23, 4.58}} % 0,0

% und damit wird verwendet

% Aliaswerte für Aliasplot (Winkelplot) pgfmathsetmacro{xAlias}{BeliebigesVorhandenesKoordinatenpaar[0]} pgfmathsetmacro{yAlias}{BeliebigesVorhandenesKoordinatenpaar[1]} %xAlias, yAlias `

Das ist eben nicht so elegant.

(22 Sep '18, 04:39) cis
Ergebnis 5 von 13 show 8 more comments

(Damitstaruahgibst.;-)

  1. Leeren plot in eine axis pfuschen.
  2. Den plot in eine neue axis zeichnen, xmin und xmax sind jetzt bekannt. Damit Du siehst, dass ich nicht betrüge, habe ich die Rundungsfehler drin gelassen. Und aus dem selben Grund habe ich im ersten Plot die opacity auf 1 gelassen.

Beispiel

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}

\begin{document}

\begin{tikzpicture}
\begin{axis}[]

% Plot Legt Dimensionen fest
\addplot+[opacity=0,nodes near coords={\pgfkeysgetvalue{/pgfplots/xmin}{\xmin}
\pgfkeysgetvalue{/pgfplots/xmax}{\xmax}
\xdef\xmin{\xmin}
\xdef\xmax{\xmax}}]
table[header=true]{ % SOLL x expr ={\xMax}
x  y
1 2
3 4
};
\end{axis}
\typeout{Pffft:\xmin,\xmax}
\begin{axis}[enlargelimits=0]
\addplot+[]
table[header=true]{ % SOLL x expr ={\xMax}
x  y
1 2
3 4
};
% Plot dient nur für Annotationen
\addplot+[nodes near coords={\xmin,\xmax}]
table[header=true, x expr =\xmin, y expr=\xmax]{ % 
a
1
2
3
};

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

alt text

Permanenter link

beantwortet 22 Sep '18, 05:46

Community's gravatar image

Community
21
Akzeptiert-Rate: 56%

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:

×296

gestellte Frage: 20 Sep '18, 22:27

Frage wurde gesehen: 5,164 Mal

zuletzt geändert: 22 Sep '18, 05:46