我是第一次使用 TikZ 和 pgfplots。 (我使用它是為了向我正在教授的微積分課上的學生發送課堂筆記。)我有一個帶有傾斜漸近線的圖表。在我可以使用 pgfplots 繪製圖表之前,我需要對圖表中的線條進行一些調整!
我在另一篇文章中看到,shorten <=2ex, shorten >=2ex
將每一端的一行縮短 2ex。此指令縮短垂直線,但不縮短斜線。我想要兩條線上都有箭頭;它們在垂直線上,但不在斜線上。我希望標記的線與線的方向相同......但偏離線。因此,我需要向上移動一個標籤,向右移動一個標籤。由於 arctan(3/2) = 56.31 度,我rotate=56.31
在節點的選項中使用了它。是否有“傾斜”命令用於沿與線相同的方向繪製此類標籤?還有一件事。 y 軸的標籤「y」距離垂直線 x=3/2 太近。如何調整它的位置? (我也不喜歡 x 軸的「x」位置。)
\documentclass{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
axis lines=middle,
xmin=-15,xmax=15,
xlabel=$x$,ylabel=$y$,
ymin=-10,ymax=10,
restrict y to domain=-12:12,
enlargelimits={abs=1cm},
axis line style={latex-latex},
ticklabel style={font=\tiny,fill=white},
xtick={\empty},ytick={\empty},
]
\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] (-13,-17) -- (13,22) node[right,rotate=56.31,pos=0.1]{$\scriptstyle{y=(3/2)x+5/2}$};
\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] ({1.5,0} |- {{axis description cs:1,1}}) -- ({{1.5,0}} |- {{axis description cs:1,-1}}) node[right,rotate=90,pos=0.5]{$\scriptstyle{x=3/2}$};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
這些命令似乎無法可靠工作的原因shorten
是因為您看不到線條的末端:它們位於繪圖區域之外,並且被剪掉了。要查看完整的行,請新增clip=false
到您的axis
選項。
我會以不同的方式處理這個問題:\draw
您可以使用命令來使用“真實”繪圖,而不是使用命令\addplot
。這樣,您可以直接指定方程,而不必事先計算旋轉角度。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
clip=false,
axis lines=middle,
xmin=-15,xmax=15,
domain=-15:15, samples=50,
xlabel=$x$,ylabel=$y$,
ymin=-10,ymax=10,
restrict y to domain=-12:12,
enlargelimits={abs=1cm},
axis line style={latex-latex},
ticklabel style={font=\tiny,fill=white},
xtick={\empty},ytick={\empty},
]
\addplot [dashed, latex-latex] {(3/2)*x+5/2} node [pos=0.25, anchor=south, font=\footnotesize, sloped] {$y=(3/2)x+5/2$};
\addplot [dashed, latex-latex] (1.5,x) node [pos=0.25, anchor=north, font=\footnotesize, sloped] {$x=3/2$};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
您可以使用該sloped
選項而不是計算角度:
筆記:
- 我還用 a 替換了板條分數,
\frac
因為我認為這樣看起來更好。 - 要取得提示處的軸標籤,您可以使用
Axis Labels At Tip
我從中提取的樣式如何正確縮放具有 `\begin{axis}...\end{axis}` 的 TikZ/PGF 圖片。 - 之所以兩端沒有箭頭,只要設定一下就可以看出
clip=false
。這些線條遠遠超出了顯示範圍。因此,您可以編輯座標以使線條的端點進入範圍,或只是增加縮短線條的量。在下面的 MWE 中,我增加了shorten
數量,因為這比計算適當的座標以保持相同的坡度和位置更簡單。
代碼:
\documentclass{amsart}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
%% https://tex.stackexchange.com/questions/17438/how-to-properly-scale-a-tikz-pgf-picture-which-has-a-beginaxis-endaxis
%%
\pgfkeys{/pgfplots/Axis Labels At Tip/.style={
xlabel style={
at={(current axis.right of origin)},
xshift=1.5ex, anchor=center
},
ylabel style={
at={(current axis.above origin)},
yshift=1.5ex, anchor=center
}
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=4in,axis equal image,
axis lines=middle,
xmin=-15,xmax=15,
xlabel=$x$,ylabel=$y$,
ymin=-10,ymax=10,
restrict y to domain=-12:12,
enlargelimits={abs=1cm},
axis line style={latex-latex},
ticklabel style={font=\tiny,fill=white},
% xtick={\empty},ytick={\empty},
Axis Labels At Tip,
%clip=false
]
\draw[dashed,latex-latex,shorten <=4ex, shorten >=15ex] (axis cs: -13,-17) -- (axis cs: 13,22) node[right,sloped, above,pos=0.15]{$y=\frac{3}{2}x+ \frac{5}{2} $};
\draw[dashed,latex-latex,shorten <=2ex, shorten >=2ex] ({1.5,0} |- {{axis description cs:1,1}}) -- ({{1.5,0}} |- {{axis description cs:1,0}}) node[right,rotate=90, below, pos=0.65]{$x= \frac{3}{2}$};
\end{axis}
\end{tikzpicture}
\end{document}