一个 pgf 图问题

一个 pgf 图问题

我是 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。不过,还有其他方法可以绘制这些线。

要获取两条绘图线交点的坐标,可以使用intersectionsTikZ 库中的功能。库已加载此功能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-1axis 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}

在此处输入图片描述

相关内容