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, 16:27

cis's gravatar image

cis
8.5k16174276
Akzeptiert: 68%

bearbeitet 20 Sep, 16: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, 16:52) Murmeltier

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, 16:56) cis

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

(20 Sep, 18:04) Murmeltier

Doch, es muss zwingend ein addplot sein.

(20 Sep, 18:28) cis

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

(20 Sep, 18:51) Murmeltier

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.

(20 Sep, 20: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.

(20 Sep, 21:12) Murmeltier

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..

(20 Sep, 22: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...

(20 Sep, 22: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, 00:04) Murmeltier

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, 00: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, 00:40) Murmeltier

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.

(21 Sep, 22:39) cis
Ergebnis 5 von 13 Alle anzeigen

(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 21 Sep, 23:46

Murmeltier's gravatar image

Murmeltier
2.0k64

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:

×263

Frage gestellt: 20 Sep, 16:27

Frage wurde angeschaut: 509 Mal

Zuletzt aktualisiert: 21 Sep, 23:46