我有一条抛物线y = x^{2} - 5x + 4
在间隔内的图[-2, 7]
和一条法线。我有默认间隔 5 个单位的网格线。由于抛物线和直线在 处相交(4,0)
,因此我extra x ticks={4}
在代码中标记了它,并且必须extra x tick labels={$\scriptstyle4$}
给它贴上标签。那里绘制了一条额外的垂直网格线。我该如何删除它?
x
我喜欢-axis 和-axis的长度。网格线画得太长了。如果我减少、、或 的y
值,网格线和轴都会变短。我该如何缩短网格线?xmin
xmax
ymin
ymax
另外,我不喜欢顶点标记的显示。如果我标记顶点,我想将坐标表示为分数。有人有什么建议吗?
\documentclass[10pt]{amsart}
\usepackage{mathtools}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=4in,grid=both,grid style={line width=.1pt, draw=gray!25}, axis equal image, clip=false,
axis lines=middle,
xmin=-7.5,xmax=12.5,
ymin=-7,ymax=22.5,
restrict y to domain=-5:20,
xticklabels={, , , , , ,},
yticklabels={, , , , , , ,},
extra x ticks={4},
extra x tick style={xticklabel style={font=\tiny,fill=white, circle, inner sep=1.5pt}},
extra x tick labels={$\scriptstyle4$},
axis line style={latex-latex},
axis line style={shorten >=-7.5pt, shorten <=-7.5pt},
xlabel=$x$, ylabel=$y$,
xlabel style={at={(ticklabel* cs:1)},anchor=north west},
ylabel style={at={(ticklabel* cs:1)},anchor=south west}
]
\addplot[samples=501, domain=-2:7] {x^2 - 5*x + 4} node[anchor=west, pos=1, font=\footnotesize]{$y=x^{2}-5x+4$};
\addplot[samples=2, domain=-7.5:12.5, latex-latex] {(-1/3)*x + 4/3} node[anchor=east, pos=0, font=\footnotesize]{$y=-\dfrac{1}{3}x+\dfrac{4}{3}$};
\draw[fill] (4,0) circle [radius=1.5pt];
\draw[fill] (2.5,-2.25) circle [radius=1.5pt];
\node[anchor=north, inner sep=0, font=\tiny] at (2.5,-2.5){$\left(\dfrac{5}{2}, -\dfrac{9}{4}\right)$};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
我谷歌了一下extra x ticks grid line
,找到了这个问题这解决了您的主要问题。
因此,诀窍是改变的风格extra x tick
:
extra x tick style={grid=none},
在您的示例中它看起来像这样:
% [...]
axis line style={latex-latex},
axis line style={shorten >=-7.5pt, shorten <=-7.5pt},
xlabel=$x$, ylabel=$y$,
xlabel style={at={(ticklabel* cs:1)},anchor=north west},
ylabel style={at={(ticklabel* cs:1)},anchor=south west},
extra x tick style={grid=none}, % <--- I added this!
]
% [...]
这导致了这样的输出:
笔记 我添加了这些样式选项以便您可以在图片中看到它:
major grid style={line width = 0.5pt,red},
axis line style={line width = 1pt},
答案2
我根本不会添加extra x ticks
。相反,我建议用普通节点标记与 x 轴点相交的斜线。通过删除它并采取一些其他措施,代码变得更简单:
\documentclass[10pt]{amsart}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
%\usepackage{tikz}% it is load by pgfplots
%\usetikzlibrary{calc,intersections}% not needed in this particular case
\usepackage{mathtools}
\begin{document}
\begin{tikzpicture}[
tbox/.style = {font=\tiny},% <-- added
fbox/.style = {font=\footnotesize}% <-- added
]
\begin{axis}[width=4in,
grid,% <-- changed
grid style={line width=.1pt, draw=gray!50}, axis equal image,
clip=false,
%
axis lines=middle,
xmin=-7.5,xmax=12.5,
ymin=-7, ymax=22.5,
xticklabels={empty},% <-- changed
yticklabels={empty},% <-- changed
%
% extra x ticks={4}, % <-- removed
% extra x tick style={xticklabel style={...}}, % <-- removed
% extra x tick labels={$\scriptstyle4$},% <-- removed
%
axis line style={latex-latex},
axis line style={shorten >=-7.5pt, shorten <=-7.5pt},
xlabel=$x$, ylabel=$y$,
xlabel style={anchor=north west},% <-- changed
ylabel style={anchor=south west} % <-- changed
]
\addplot[samples=501,domain=-2:7] {x^2 - 5*x + 4} node[fbox,right]{$y=x^{2}-5x+4$};
\addplot[samples=2, domain=12.5:-7.5, latex-latex] {(-1/3)*x + 4/3} node[fbox,left]{$y=-\dfrac{1}{3}x+\dfrac{4}{3}$}; % <-- changed
\draw[fill] (4,0) circle [radius=1.5pt] node[tbox,below] {4};
\draw[fill] (2.5,-2.25) circle [radius=1.5pt] node[tbox,below] {$\left(\dfrac{5}{2}, -\dfrac{9}{4}\right)$};
\end{axis}
\end{tikzpicture}
\end{document}
编辑:
就我所见extra x ticks
,我假设该坐标是预先知道的,并且仅用标签指定。所以我得出结论,这个点可以指定为图中的其他点:通过节点。因此,我建议不要使用extra x ticks
所有必要的复杂功能来使其按预期出现,而是使用简单的节点。
总的来说,我并不关心图形的外观。颜色或线条粗细可以很容易地根据自己的喜好或其他愿望进行更改。
与所讨论的 MWE 相比,上述 MWE 中的所有其他更改均% <-- ....
在代码中用注释标明,说明有何不同(更改、添加)。它们是:
- 在序言中被删除
tikz
(因为它是由加载的pgfplots
)和 TikZ 库 - 定义了两种用于图形的节点样式:
tbox
带有字体大小的文本的节点tiny
和fbox
带有字体大小的文本的节点\footnotesize
。这样,后者的代码更短,更容易阅读。 grid=both
仅通过执行相同操作进行更改grid
(对于这个答案来说并不重要)xticklabels={, , , , , ,}
和类似地yticklabels
被替换为更短的xticklabels={empty}
,这会产生相同的结果。