在 TikZ 內容區域之外繪製箭頭

在 TikZ 內容區域之外繪製箭頭

我有一個相當標準的 tikz 情節。為了澄清 y 軸上的低值實際上更快/更好,我想在實際繪圖區域之外繪製一個附加箭頭,如附件所示。我發現了各種繪圖方法\draw,但它們都只能在繪圖的內容區域內操作 - 我如何在該區域之外繪圖?

以下是我目前如何創建情節的 MWE:

\documentclass[11pt,a4paper]{article}
\usepackage{pgfplots, pgfplotstable}    
\usepackage{tikz}

\begin{document}
\begin{figure}
\begin{tikzpicture}[scale=0.75]
         \pgfplotsset{grid style={dashed,gray}}
        \begin{axis}[
        xlabel={X}, 
        ylabel=time,
        xmin=0.8,
        xmax=1.0,
        ymin=1,     
        ymax=200,   
        xmajorgrids=true,
        ymajorgrids=true,
    ]      

\addplot+[
            black,
            mark options={fill= black},
            only marks,
            mark size=2,
            mark=square*,
        ] 
        coordinates {
            (0.805, 10)
            (0.85, 20)

        };



    \end{axis}
    \end{tikzpicture}   

\end{figure}

\end{document}

在此輸入影像描述

答案1

我們nameaxis以便能夠在axis環境之外存取它。

然後,我們在它的一些關鍵點之間畫一條線。

輸出

在此輸入影像描述

程式碼

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{arrows}

\begin{document}
\begin{tikzpicture}[scale=0.75, >=stealth']
  \pgfplotsset{grid style={dashed,gray}}
  \begin{axis}
    [
      name=myGraph,
      xlabel={X}, 
      ylabel=time,
      xmin=0.8,
      xmax=1.0,
      ymin=1,     
      ymax=200,   
      xmajorgrids=true,
      ymajorgrids=true,
    ]      

    \addplot+
    [
      black,
      mark options={fill= black},
      only marks,
      mark size=2,
      mark=square*,
    ] 
    coordinates 
    {
      (0.805, 10)
      (0.85, 20)
    };
  \end{axis}

  \def\myShift{-2cm}
  \draw [red, very thick, ->] ([xshift=\myShift]myGraph.north west) -- ([xshift=\myShift]myGraph.south west) node [midway, rotate=90, fill=white, yshift=2pt] {faster} ;
  %\draw [red, very thick, ->] (myGraph.left of north west) -- (myGraph.left of south west) node [midway, rotate=90, fill=white, yshift=2pt] {faster} ; % an alternative way
\end{tikzpicture}
\end{document}

乾杯,

答案2

編輯:更改rel axis csaxis description cs評論中的建議。

您可以將axis description cs座標系用於類似這樣的事情:

\documentclass{article}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \begin{axis}
        [
            grid style = {dashed, gray},
            xlabel={X}, 
            ylabel=time,
            xmin=0.8,
            xmax=1.0,
            ymin=1,     
            ymax=200,   
            xmajorgrids=true,
            ymajorgrids=true,
            clip = false % <--- Important
        ]      
        \addplot+
        [
            black,
            mark options={fill= black},
            only marks,
            mark size=2,
            mark=square*,
        ] 
        coordinates { (0.805, 10) (0.85, 20) };
        % add annotation here:
        \draw[red, ->] ([xshift = -2cm] axis description cs:0, 1) -- node[left] { Faster } ([xshift = -2cm] axis description cs:0, 0);
    \end{axis}
\end{tikzpicture}   
\end{document}

答案圖片 該點(axis description cs:0, 1)是左上點,(axis description cs:0, 0)是左下點。兩個點都移動2cm(任意,根據您的口味選擇)。請注意,您必須關閉axis環境中的剪切,否則在軸外繪製的所有內容都將不可見。

我總有種感覺,這樣的事情可以更好地解決。在我看來,你應該始終選擇你想要展示的單位和東西來反映你的觀點。在這種情況下,也許可以使用時間的倒數(也許是頻率)來繪製數據?我不知道你在展示什麼,但請記住,(在我看來)解決問題最好不是透過聰明的技術/文字技巧(添加自訂註釋),而是使用正確的視覺化方法。

相關內容