我是 pgfplot 的新手,我遇到了一个 pgfplot 问题。
图 1:如您所见,该线经过数字“2”。我该如何修复它?
图 2:我还可以固定线的长度,经过 2,在 0 和交点之间。
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz,pgf,pgfplots}
\pgfplotsset{compat=1.10}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,
xlabel=$x$,
ylabel=$y$,
enlargelimits,
ytick=\empty,
xtick={2},
%xticklabels={2},
every axis y label/.style={at=(current axis.above origin),anchor=south},
every axis x label/.style={at=(current axis.right of origin),anchor=west},
grid = major
]
\addplot[name path=F,blue,domain={0:2}] {6-x^2} node[pos=0.6, above]{$f$};
\addplot[name path=G,green,domain={0:2}] {x}node[pos=.4, below]{$g$};
\addplot[pattern=north west lines, pattern color=brown!50]fill between[of=F and G, soft clip={domain=0:2}]
;
\node[coordinate,pin=30:{$A$}] at (axis cs:3.8,3){};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
网格线从坐标系的底部延伸到顶部,这就是网格线穿过的原因2
。不过,还有其他方法可以绘制这些线。
要获取两条绘图线交点的坐标,可以使用intersections
TikZ 库中的功能。库已加载此功能fillbetween
,因此无需专门加载。添加
name intersections={of=F and G}
路径选项(例如\draw
)将创建一个名为的坐标,intersection-1
位于(第一个)交叉点处。要从交叉点到 x 轴绘制一条线,您可以添加
\draw [name intersections={of=F and G}] ({axis cs:0,0}-|intersection-1) -- (intersection-1);
在环境中axis
。这里,
({axis cs:0,0}-|intersection-1)
表示与轴原点有相同y坐标的点,并且与 有相同的y坐标intersection-1
。 axis cs:
表示下面的坐标使用轴的坐标。
要从 x 轴通过交点到轴顶部绘制一条线,可以使用
\draw ({axis cs:0,0}-|intersection-1) -- ({rel axis cs:1,1}-|intersection-1);
假设intersection-1
已经定义了。第一个坐标如上。对于第二个坐标rel axis cs
,我使用的坐标系为轴左下角为 (0,0),右上角为 (1,1)。
完整代码及输出:
\documentclass[border=3mm,tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,
xlabel=$x$,
ylabel=$y$,
enlargelimits,
ytick=\empty,
xtick={2},
%xticklabels={2},
every axis y label/.style={at=(current axis.above origin),anchor=south},
every axis x label/.style={at=(current axis.right of origin),anchor=west},
]
\addplot[name path=F,blue,domain={0:2}] {6-x^2} node[pos=0.6, above]{$f$};
\addplot[name path=G,green,domain={0:2}] {x}node[pos=.4, below]{$g$};
\addplot[pattern=north west lines, pattern color=brown!50]fill between[of=F and G, soft clip={domain=0:2}]
;
\draw [name intersections={of=F and G}] ({axis cs:0,0}-|intersection-1) -- (intersection-1);
\draw [thick,red,dashed] ({axis cs:0,0}-|intersection-1) -- ({rel axis cs:1,1}-|intersection-1);
\end{axis}
\end{tikzpicture}
\end{document}