有人能帮我解释一下为什么以下代码中的标签定位不起作用吗?不清楚我做错了什么。我也试过了axis description cs
。这也没有改变标签的位置。
谢谢。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=4in,
height=4in,
xlabel={Quantity},
% the following x label positioning does not work.
every axis x label/.style=
{at={(ticklabel cs: 0.5)}, anchor=north},
ylabel={Price},
axis x line=middle,
axis y line=middle,
ytick={0,10,...,90},
xtick={0,10,...,90},
ymin=0,
ymax=100,
xmin=0,
xmax=100,
xlabel shift = -1in,
]
\addplot coordinates {(0,90) (90,0)};
\addplot[color=red,domain=0:40]{2*x} node [pos=1,above]{MC};
% why is this node not visible.
\node at (axis description cs:0.5,-0.02) {(0,0)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
axis x line
重新定义标签样式,将定义移至其后。请注意,您似乎还需要指定 y 坐标为零,即(ticklabel cs:0.5,0)
。
阅读第 4.9.1 节轴描述的位置在pgfplots
手册中了解有关ticklabel
坐标系的更多讨论。
至于不可见节点,轴限制之外的所有内容默认都会被剪掉。如果设置clip mode=individual
,图将被剪掉,但\node
s 和类似图不会被剪掉。
最后,pgfplots
加载tikz
,因此您实际上不必明确加载后者。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=4in,
height=4in,
xlabel={Quantity},
ylabel={Price},
axis x line=middle,
axis y line=middle,
% the following x label positioning does work here.
every axis x label/.style=
{at={(ticklabel cs: 0.5,0)}, anchor=north},
ytick={0,10,...,90},
xtick={0,10,...,90},
ymin=0,
ymax=100,
xmin=0,
xmax=100,
xlabel shift = -1in,
clip mode=individual
]
\addplot coordinates {(0,90) (90,0)};
\addplot[color=red,domain=0:40]{2*x} node [pos=1,above]{MC};
% why is this node not visible.
\node at (axis description cs:0.5,-0.02) {(0,0)};
\end{axis}
\end{tikzpicture}
\end{document}