![绘制三角函数图,轴上标有刻度线](https://linux22.com/image/295671/%E7%BB%98%E5%88%B6%E4%B8%89%E8%A7%92%E5%87%BD%E6%95%B0%E5%9B%BE%EF%BC%8C%E8%BD%B4%E4%B8%8A%E6%A0%87%E6%9C%89%E5%88%BB%E5%BA%A6%E7%BA%BF.png)
我提供了绘制三个三角函数的代码。(在序言中,我不得不在%
命令前加上一个\usetikzlibrary{calc,angles,quotes}
,因为 LaTeX 无法用该命令编译它。它给了我错误can't find file 'tikzlibraryangles.code.tex'
。MikTeX2.9 正在编译代码。)如何将标签“$\scriptstyle{y = \sin(x)}”、“$\scriptstyle{y = \cos(x)}”和“$\scriptstyle{y = \tan(x)}”直接添加到相应图形的 y 轴下方?箭头应该位于轴的两端。它们目前位于一端。是否有代码可以将刻度标记的标签(在节点中)放在图形的其他特征上?代码如何指示 TikZ 以半个单位的增量标记刻度标记?如何让代码指示 TikZ 以 \pi/2 的整数倍的增量标记刻度标记?在正切函数的图形中,渐近线是实线。如何获得虚线?在绘制正切函数的代码中,有“scaled x ticks={real:3.1415}, xtick scale label code/.code={}”。“{real:3.1415}”和“code/.code={}”指示 TikZ 在 x 轴上绘制什么?
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
%\usetikzlibrary{calc,angles,quotes}
\usepackage{pgfplots}
\pgfkeys{/pgfplots/Axis Style/.style={
width=13.5cm, height=5cm,
axis x line=center,
axis y line=middle,
samples=100,
ymin=-1.5, ymax=1.5,
xmin=-7.0, xmax=7.0,
domain=-2*pi:2*pi
}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={
-6.28318, -4.7123889, -3.14159, -1.5708,
1.5708, 3.14159, 4.7123889, 6.28318
},
xticklabels={
$-2\pi$, $-3\pi/2$, $-\pi$, $\pi/2$,
$\pi/2$, $\pi$, $3\pi/2$, $2\pi$
}
]
\addplot [mark=none, ultra thick, blue] {sin(deg(x))};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={
-6.28318, -4.7123889, -3.14159, -1.5708,
1.5708, 3.14159, 4.7123889, 6.28318
},
xticklabels={
$-2\pi$, $-3\pi/2$, $-\pi\hspace{0.30cm}$, $\pi/2$,
$\pi/2$, $\pi\hspace{0.10cm}$, $3\pi/2$, $\hspace{0.25cm} 2\pi$
}
]
\addplot [mark=none, ultra thick, red] {cos(deg(x))};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={-6.28318, -4.7123889, ..., 6.28318},
scaled x ticks={real:3.1415},
xtick scale label code/.code={},
]
\addplot [mark=none, thin, brown] {tan(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
你问了好多问题!通常最好在这个网站上问一个重点突出的问题;)
但,我们试图解答您的疑问……
标签,例如 $y = \sin(x),会使图表更美观。我猜直接在 y 轴下。
例如,你可以使用
\begin{axis}[
Axis Style,
xtick={
-6.28318, -4.7123889, -3.14159, -1.5708,
1.5708, 3.14159, 4.7123889, 6.28318
},
xticklabels={
$-2\pi$, $-3\pi/2$, $-\pi$, $\pi/2$,
$\pi/2$, $\pi$, $3\pi/2$, $2\pi$
},
ylabel={$y=\sin(x)$}, %<---- new bit
]
或者,例如,
...
\addplot [mark=none, ultra thick, blue] {sin(deg(x))};
\addlegendentry{$y=\sin(x)$} %<---- new bit
...
您可能还想使用以下方法调整图例位置legend pos=...
箭头应位于轴的两端。目前它们位于一端。
您可以使用,
\pgfkeys{/pgfplots/Axis Style/.style={
width=.3\textwidth, %height=5cm,
axis x line=center,
axis y line=middle,
samples=100,
ymin=-1.5, ymax=1.5,
xmin=-7.0, xmax=7.0,
domain=-2*pi:2*pi,
axis line style=<->, %<----- new bit
}}
或以其他方式使用pgfplotsset
(如下所示)。
该比例适用于正弦和余弦函数的图形,但不适用于正切函数。也许 y 轴包括 -10 和 10。
例如,尝试使用
\begin{axis}[
Axis Style,
xtick={-6.28318, -4.7123889, ..., 6.28318},
scaled x ticks={real:3.1415},
xtick scale label code/.code={},
ymin=-10,ymax=10, %<---- new bit
]
更改此图的比例可能会使沿轴的标签被正切函数的图覆盖。是否有代码可以将标签(在节点中)置于图的其他特征之上?
我相信你想要axis on top
这个的钥匙。
目前,三个图的 y 轴对齐。如何才能使 x 轴对齐?
删除图形之间的空白行 - 请注意,您需要调整文本宽度以使它们很好地适应 - 考虑geometry
为此包。
mark=none 指示 TikZ 做什么? mark 还有哪些其他选项?
mark=none
意味着您只能获得曲线,而不会获得沿途采样点处的圆圈(或其他标记)。很多其他选项 - 请参阅第 4.7 节pgfplots
了解详情。
这是可以用来实现我所提到的内容的完整代码。
% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}
\usepackage{pgfplots}
\usepackage[margin=1cm]{geometry}
\pgfplotsset{Axis Style/.style={
width=.3\textwidth, %height=5cm,
axis x line=center,
axis y line=middle,
samples=100,
ymin=-1.5, ymax=1.5,
xmin=-7.0, xmax=7.0,
domain=-2*pi:2*pi,
axis line style=<->,
}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={
-6.28318, -4.7123889, -3.14159, -1.5708,
1.5708, 3.14159, 4.7123889, 6.28318
},
xticklabels={
$-2\pi$, $-3\pi/2$, $-\pi$, $\pi/2$,
$\pi/2$, $\pi$, $3\pi/2$, $2\pi$
},
ylabel={$y=\sin(x)$},
]
\addplot [mark=none, ultra thick, blue] {sin(deg(x))};
\addlegendentry{$y=\sin(x)$}
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={
-6.28318, -4.7123889, -3.14159, -1.5708,
1.5708, 3.14159, 4.7123889, 6.28318
},
xticklabels={
$-2\pi$, $-3\pi/2$, $-\pi\hspace{0.30cm}$, $\pi/2$,
$\pi/2$, $\pi\hspace{0.10cm}$, $3\pi/2$, $\hspace{0.25cm} 2\pi$
}
]
\addplot [mark=none, ultra thick, red] {cos(deg(x))};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={-6.28318, -4.7123889, ..., 6.28318},
scaled x ticks={real:3.1415},
xtick scale label code/.code={},
ymin=-10,ymax=10,
]
\addplot [mark=none, ultra thick, brown] {tan(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
使用 PSTricks 轻松定制的模板。
\documentclass[pstricks,border=0pt,12pt,dvipsnames]{standalone}
\usepackage{amsmath}
\usepackage{pstricks-add}
\usepackage{pst-plot}
% \usepackage{pst-math} provides ATAN
\usepackage[nomessages]{fp}
\FPeval\XMin{0-2*pi}
\FPeval\XMax{2*pi}
\FPeval\YMin{0-pi}
\FPeval\YMax{5*pi/3}
\FPeval\XOL{0-1/3} % of DeltaX
\FPeval\XOR{1/3} % of DeltaX
\FPeval\YOB{0-1/3} % of DeltaY
\FPeval\YOT{1/3} % of DeltaY
\FPset\TrigLabelBase{3}
\FPeval\DeltaX{pi/TrigLabelBase}
\FPeval\DeltaY{pi/TrigLabelBase}
\FPeval\AxisL{XMin+DeltaX*XOL}
\FPeval\AxisR{XMax+DeltaX*XOR}
\FPeval\AxisB{YMin+DeltaY*YOB}
\FPeval\AxisT{YMax+DeltaY*YOT}
\newlength\Width\Width=12cm
\newlength\Height\Height=8cm
\newlength\llx\llx=-5pt
\newlength\urx\urx=15pt
\newlength\lly\lly=-5pt
\newlength\ury\ury=15pt
\psset
{
llx=\llx,
lly=\lly,
urx=\urx,
ury=\ury,
xtrigLabels=true,
ytrigLabels=true,
trigLabelBase=\TrigLabelBase,
labelFontSize=\scriptstyle,
xAxisLabel=$x$,
yAxisLabel=$y$,
algebraic,
plotpoints=500,
}
\def\f{Pi*sin(x)}
\def\fp{Derive(1,\f)}
\def\g{2*asin(x/(2*Pi))}
\begin{document}
\pslegend[lt]{%
\color{NavyBlue}\rule{12pt}{1pt} & \color{NavyBlue} $y=\pi\sin x$ \\
\color{Red}\rule{12pt}{1pt} & \color{Red} $y=\pi\cos x$ \\
\color{ForestGreen}\rule{12pt}{1pt} & \color{ForestGreen} $y=2\sin^{-1}\left(\tfrac{x}{2\pi}\right)$
}
\begin{psgraph}
[
dx=\DeltaX,
dy=\DeltaY,
linecolor=gray,
tickcolor=gray,
ticksize=-3pt 3pt,
axespos=top,
]{<->}(0,0)(\AxisL,\AxisB)(\AxisR,\AxisT){\dimexpr\Width-\urx+\llx}{!}%{\dimexpr\Height-\ury+\lly}
\psaxes
[
dx=\DeltaX,
dy=\DeltaY,
labels=none,
subticks=5,
tickwidth=.4pt,
subtickwidth=.2pt,
tickcolor=Red!30,
subtickcolor=ForestGreen!30,
xticksize=\YMin\space \YMax,
yticksize=\XMin\space \XMax,
subticksize=1,
](0,0)(\XMin,\YMin)(\XMax,\YMax)
\psplot[linecolor=NavyBlue]{\XMin}{\XMax}{\f}
\psplot[linecolor=Red]{\XMin}{\XMax}{\fp}
\psplot[linecolor=ForestGreen]{\XMin}{\XMax}{\g}
% -------------------
% tangent and normal
\psplotTangent[linecolor=Magenta]{Pi 3 div 2 mul}{1.5}{\f}
\psplotTangent[linecolor=Cyan,Derive={-1/\fp}]{Pi 3 div 2 mul}{1.5}{\f}
%
% sum
\psplot[linecolor=Rhodamine]{\XMin}{\XMax}{Sum(i,0,1,7,(-1)^(i)*x^(2*i)/fact(2*i))}
\end{psgraph}
\end{document}
文档
本节说明模板中使用的设置。