Zeichnen Sie die äußere Achse mit pgfplots

Zeichnen Sie die äußere Achse mit pgfplots

Ich habe das folgende Diagramm und möchte die rote Linie verlängern, sodass sie die Achsen kreuzt und am Anfang und Ende ein Stück weitergeht, wie im zweiten Bild, aber ich möchte, dass die roten und blauen Punkte weiterhin vertikal ausgerichtet sind. Außerdem sollte die verlängerte rote Linie über der oberen Achse enden.

Was ich habe

Was ich möchte

\documentclass{article}
\usepackage{pgf}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{figure} [tb]%
  \centering
  \begin{tikzpicture}
    \begin{semilogxaxis}[
      enlarge y limits=true,
      enlarge x limits=false]
      \addplot[very thick,draw=blue!70, mark=*,mark options={color=blue!70}]  coordinates
      {(229,62) (1475,122) (23598,255) (27101,272) (32427,280) (55124,322) (758667,5509) (1273808,5649) (1406902,6375)};
    \end{semilogxaxis}
    \begin{semilogxaxis}[
      smooth,
      axis y line=none,
      axis x line=none,
      ticks=none,
      enlarge y limits=true,
      enlarge x limits=false]
      \addplot[very thick,draw=red!70] expression[domain=229:1406902] {x};
      \addplot[draw=none,mark=*,mark options={color=red!70}]  coordinates
      {(229,229) (1475,1475) (23598,23598) (27101,27101) (32427,32427) (55124,55124) (758667,758667) (1273808,1273808) (1406902,1406902)};
    \end{semilogxaxis}
  \end{tikzpicture}
  \caption{Caption}
\end{figure}
\end{document}

Ich habe versucht, die Breite und Höhe der zweiten Halblogaxis zu ändern und den Definitionsbereich der Kurve darin zu ändern, aber dann gelingt es mir nicht, die Punkte vertikal auszurichten.

Ich habe auch versucht, ein zu verwenden \draw[domain=0:2000000,smooth,variable=\x] plot (axis cs:\x,\x);, aber dann erhalte ich eine Dimension too largeFehlermeldung und kann Tikz nicht dazu bringen, \draw plotdie FPU (Floating Point Unit) zu verwenden.

Antwort1

Sie können nach dem Plotten weiter zeichnen und die speziellen Koordinaten verwenden current plot end/begin. Indem Sie Dummy-Koordinaten sehr nahe am Ende und am Anfang platzieren, können Sie eine Tangentennäherung imitieren. Dazu müssen Sie jedoch das Clipping-Verhalten der Achsen ausschalten. SieheLinienstil innerhalb eines Diagramms ändern, um gestrichelte Trendlinie hinzuzufügen?für eine ähnliche Lösung mit einer Knotenform, die in bestimmten Fällen besser sein könnte, wenn die Darstellung nicht zu ausgefallen ist.

\documentclass{article}
%\usepackage{pgf}
%\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\begin{document}

\begin{figure} [tb]%
  \centering
  \begin{tikzpicture}
    \begin{semilogxaxis}[
      enlarge y limits=true,clip=false,
      enlarge x limits=false]
      \addplot[very thick,draw=blue!70, mark=*,mark options={color=blue!70}]  coordinates
      {(229,62) (1475,122) (23598,255) (27101,272) (32427,280) (55124,322) (758667,5509) (1273808,5649) (1406902,6375)};
    \end{semilogxaxis}
    \begin{semilogxaxis}[
      smooth,clip=false,
      axis y line=none,
      axis x line=none,
      ticks=none,
      enlarge y limits=true,
      enlarge x limits=false]
      \addplot[very thick,draw=red!70] expression[domain=229:1406902] {x} 
    coordinate [pos=0.98] (c2) coordinate [pos=0.01] (c3) (current plot end) -- ($(c2)!10!(current plot end)$) 
    (current plot begin) -- ($(c3)!1.2!(current plot begin)$);
      \addplot[draw=none,mark=*,mark options={color=red!70}]  coordinates
      {(229,229) (1475,1475) (23598,23598) (27101,27101) (32427,32427) (55124,55124) (758667,758667) (1273808,1273808) (1406902,1406902)};
    \end{semilogxaxis}
  \end{tikzpicture}
  \caption{Caption}
\end{figure}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen