Gibt es eine Erklärung zu diesem Befehl?

Open in Online-Editor
\draw[orange,dashed] ({axis cs:50045,0}|-{rel axis cs:0,1}) -- ({axis cs:50045,0}|-{rel axis cs:0,0});

Danke

Minimalbeispiel: Das bei mir nicht geht. Das Rechteck wird über die ganze x-Achse gezeichnet. Fehlermeldungen je nach pgfplotsset{compat=1.14} Einstellung -> Dimension too large bzw. pgfkeys: Choice '1.14' unknown in key '/pgfplots/compat/BB'. I am going to ignore this key. \pgfplotsset{compat=1.14}

Open in Online-Editor
\begin{filecontents}{1.dat}
amplitudea  countb
106.62  1
106.62  50045
94.2741 50045
92.5907 100090
92.0295 300266
89.7849 500442
89.2237 700618
82.4899 750662
72.9502 950838
71.8279 1000882
69.0221 1050927
62.2883 1100971
60.6048 1151015
59.4825 1351191
58.9213 1401235
58.3602 1451279
57.799  1501323
57.2379 1701499
55.5544 1901675
53.3098 2101851
51.0651 2151895
48.8205 2402115
48.2594 2452159
48.2594 2652335
47.1371 2702379
46.5759 2752424
44.3313 2952600
43.7701 3002644
43.209  3202820
38.1586 3402996
35.3528 3453040
34.7916 3653216
33.1082 3703260
32.547  3903436
31.9859 4103612
31.4247 4303788
31.4247 4503964
29.7412 4704140
29.7412 4904316
29.1801 5104492
29.1801 5304668
29.1801 5354712
28.0578 5554888
26.9355 5604932
26.9355 5855152
26.9355 6055328
26.3743 6105372
26.3743 6305548
26.3743 6505724
26.3743 6555769
25.8132 6655857
25.8132 6856033
25.8132 7056209
25.252  7306429
25.252  7356473
24.6908 7556649
24.1297 7756825
24.1297 7806869
24.1297 7856913
23.5685 7957001
23.0074 8007045
23.0074 8207221
23.0074 8407397
23.0074 8607573
23.0074 8657617
22.4462 8907837
22.4462 9158057
21.8851 9608453
21.8851 9808629
21.3239 10008805
21.3239 10208981
21.3239 10409157
20.7628 10609333
20.7628 10809509
20.7628 10909597
20.2016 10959641
19.6404 11159817
19.6404 11359993
19.0793 11560169
18.5181 11760345
18.5181 12010565
18.5181 12260785
\end{filecontents}

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usetikzlibrary{patterns}
%\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
        enlarge x limits=false,
        no marks,
        %grid=both,
        grid=none,
        xmin=1e4, xmax=22260785, 
        ymin=0, ymax=120,
        legend entries={$\sigma$},
        title=Spektrum,
        ylabel={$\sigma_{a}$},
        xlabel={$N$},
        scale only axis    
     ]
    \addplot+[const plot] table[x=countb,y=amplitudea] {1.dat};
   %Hilfslinien Anfang 
      % \begin{scope}[green] 
        \filldraw [draw=red,pattern=north east lines] (rel axis cs:0,0) rectangle (100000,18.385735235);      
      % \end{scope}
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

gefragt 22 Sep '16, 15:23

Linux404's gravatar image

Linux404
3221622
Akzeptiert-Rate: 100%

bearbeitet 23 Sep '16, 11:24

1

Siehe 13.3 Coordinates at Intersections in der Anleitung.

(22 Sep '16, 18:13) Henri

Welche pgfplots Version verwendest Du? Wenn compat=1.14 unbekannt ist, dann ist es eine ältere Version. Wenn Du in Deinem jetzigen Beispiel compat=newest oder compat=1.12 (derzeitige Verison bei Overleaf) setzt, dann funktioniert es im Online-Editor. Wenn Deine Verison älter als 1.11 ist, dann ist axis cs noch nicht Standard und Du musst dessen Verwendung bei den Koordinaten explizit angeben. In dem Fall würde ich Dir aber zu einem Update des Pakets raten.

(23 Sep '16, 21:35) esdd

@esdd 1.8 habe ich

(26 Sep '16, 08:43) Linux404

Boah! Die ist ja älter als mein Sofa! Schon bei TeX Live 2013 war pgfplots 1.10 aktuell. Inzwischen sind wir bei pgfplots 1.14. Du solltest vielleicht einmal in Erwägung ziehen, eine aktuelle TeX-Distribution zu installieren oder falls Du MiKTeX verwendest, ein Komplettupdate sowohl als Admin als auch als User zu machen.

(26 Sep '16, 10:12) saputello
1

Dann nimm compat=1.8 und \filldraw [draw=red,pattern=north east lines] (rel axis cs:0,0) rectangle (axis cs:100000,18.385735235);.

(27 Sep '16, 20:09) esdd

Open in Online-Editor
\draw[orange,dashed] ({axis cs:50045,0}|-{rel axis cs:0,1}) -- ({axis cs:50045,0}|-{rel axis cs:0,0});

zeichnet eine orange gestichelte vertikale Linie an der Stelle x=50045, die vom höchsten y-Wert des Diagramms bis zum niedrigsten geht.

Beispiel:

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}% Aktuell ist derzeit 1.14. Das hat Overleaf aber noch nicht.
\begin{document}

\begin{tikzpicture}
\begin{axis}[
  xmin=45000, xmax=52000,
  ymin=-10, ymax=-1,
  ]
\draw
  [orange,dashed]
  (50045,0|-{rel axis cs:0,1}) -- (50045,0|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{document}

alt text

Dabei sind axis cs und rel axis cs zwei verschiedene Koordinatensysteme, die neben anderen von pgfplots bereit gestellt werden und innerhalb einer axis Umgebung verwendet werden können.

axis cs verwendet die gleichen Koordinaten, wie sie auch in den Plots verwendet werden. Benutzt man eine aktuelle pgfplots Version (1.11 oder neuer) und setzt die Option compat auf einen entsprechenden Wert, dann ist axis cs das Standardkoordinatensystem innerhalb der axis Umgebung. In dem Fall bezeichnet (50045,0) den gleichen Punkt wie (axis cs:50045,0). Die Option compat sollte man übrigens immer direkt nach dem Laden des Paketes als erste Option setzen.

rel axis cs nutzt die Länge der Achsen als Einheit. Deshalb liegt (rel axis cs:0,0) bei dem Punkt mit der kleinsten x und der kleinsten y Koordinate des Diagramms. (rel axis cs:0,1) ist dagegen der Punkt mit der kleinsten x, aber der größten y Koordinate.

(a|-b) ist der Schnittpunkt der vertikalen Linie durch die Koordinate (a) und der horizontalen Linie durch (b). Damit ist ({axis cs:50045,0}|-{rel axis cs:0,1}) der Schnittpunkt der vertikalen Linie an der Stelle x=50045 mit der horizontalen Linie durch die maximale y Koordinate des Diagramms. Analog ist ({axis cs:50045,0}|-{rel axis cs:0,0}) der Schnittpunkt der vertikalen Linie an der Stelle x=50045 mit der horizontalen Linie durch die kleinste y Koordinate des Diagramms. Dabei kann der Punkt (axis cs:50045,0) auch außerhalb des Diagramms liegen.

Zur Verdeutlichung ist hier noch eine Skizze, in der die horizontale Linie durch (rel axis:0,1) grün und die durch (rel axis:0,0) blau dargestellt ist. Die vertikale Linie durch (axis cs:50045,0) ist grau.

alt text

Code:

Open in Online-Editor
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}% Aktuell ist derzeit 1.14. Das hat Overleaf aber noch nicht.
\begin{document}

\begin{tikzpicture}
\begin{axis}[
  xmin=45000, xmax=52000,
  ymin=-10, ymax=-1,
  clip=false
  ]
\draw[lightgray, thick]
    (50045,0)node[fill,label={right:(50045,0)}]{}
    --(50045,0|-{rel axis cs:0,0})
;
\draw[green,very thick]
    (rel axis cs:0,1)node[fill,label={above:(rel axis cs:0,1)}]{}
    --(50045,0|-{rel axis cs:0,1})node[fill=orange]{}
;
\draw[blue,very thick]
    (rel axis cs:0,0)node[fill,label={[label distance=1ex]below:(rel axis cs:0,0)}]{}
    --(50045,0|-{rel axis cs:0,0})node[fill=orange]{}
;
\draw
  [orange,dashed,very thick]
  (50045,0|-{rel axis cs:0,1}) -- (50045,0|-{rel axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{document}

Die Option clip=false wird verwendet, damit die Linien und Nodes nicht am Rand des Diagramms abgeschnitten werden.

Permanenter link

beantwortet 23 Sep '16, 01:15

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Du willst in einem Koordinatensystem eine senkrechte Linie von oben bis auf die x-Achse zeichnen. Wenn du die maximalen Koordinaten kennst, ist es kein Problem: \draw ({axis cs:50045,5}) -- ({axis cs:50045,0}); Hier einmal angenommen, dass der y-Bereicxh von [?;5] geht. Wenn du diese y-Werte jedoch nicht kennst, hast du ein Problem. Man kann mit deinen obigen Angaben symbolische koordinaten angeben: ({axis cs:50045,0}|-{rel axis cs:0,1}) Ausgehend vom Punkt (50045,0) wird eine relative senkrechte Verschiebung auf (0,1) vorgenommen, also bis zum maximalen Wert. Die andere Koordinate ist eigentlich etwas übertrieben, denn {rel axis cs:0,0} liefert eigentlich keine Verschiebung mehr, so dass ({axis cs:50045,0}) völlig ausreicht.

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
\begin{axis}[
  width=10cm,height=5cm,
  scale only axis,
  xmin=0, xmax=51000, ymin=-2, ymax=5]
\draw[orange,dashed] ({axis cs:50045,0}|-{rel axis cs:0,1}) -- ({axis cs:50045,0});
\end{axis}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 22 Sep '16, 18:54

crazyhorse's gravatar image

crazyhorse
4323
Akzeptiert-Rate: 26%

bearbeitet 22 Sep '16, 20:41

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:

×730
×298
×52
×27

gestellte Frage: 22 Sep '16, 15:23

Frage wurde gesehen: 9,919 Mal

zuletzt geändert: 27 Sep '16, 20:09