使用 TikZ 在三角形区域内着色并插入标签

使用 TikZ 在三角形区域内着色并插入标签

我需要绘制一个三角形,顶点为(0,0)(1,2)(0,3)带有 x 和 y 坐标轴(和标签)以及轴上的刻度标记。如何在 TikZ 中实现此目的。

我的代码是:

\begin{tikzpicture} 
\draw[->] (-5.0,0) -- (5.0,0) node[right] {$x$} coordinate(x axis); 
\draw[->] (0,-5.0) -- (0,5.0) node[above] {$y$} coordinate(y axis); 
\draw (0,0) -- (1,2) -- (0,3) -- cycle; 
\end{tikzpicture} 

但是,如何获取该区域内的标记点和阴影?

答案1

以下是我的解决方案:

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{shadings}

\begin{document}

\begin{tikzpicture} 
\draw[top color=white,bottom color=red] (0,0) -- (1,2) -- (0,3) -- cycle; 

\foreach \coordinate/\label/\pos in {{(0,0)/label1/above left},{(1,2)/label2/right},{(0,3)/label3/above right}}
\node[\pos] at \coordinate {\label};

\draw[->] (-5.0,0) -- (5.0,0) node[right] {$x$} coordinate(x axis); 
\draw[->] (0,-5.0) -- (0,5.0) node[above] {$y$} coordinate(y axis); 
\end{tikzpicture} 

\end{document}

它给:

在此处输入图片描述

关键点基本上有两点:

  1. 允许foreach一次性指定将放置在给定位置(coordinate即(0,0))的;labelpositionabove left

  2. 使用shadings允许对区域进行阴影处理的库;在示例中,阴影是垂直的,但可以插入不同类型的阴影(参见 pgfmanual 版本 2012 年 4 月 25 日中的 47 阴影库 / pgfmanual 版本 2010 年 10 月 25 日中的 46 阴影库)。

答案2

使用 tikz 和 tkz-euclide 的解决方案

\documentclass[11pt]{scrartcl}
\usepackage{tkz-euclide}
\usetkzobj{polygons} 

\begin{document}
\begin{tikzpicture}
   \tkzInit[xmax=5,ymax=5]     
   \tkzAxeXY
   \tkzDefPoint(0,0){A}   
   \tkzDefPoint(1,2){B}
   \tkzDefPoint(0,3){C}   
   \tkzDrawPolygon[top color=white,bottom color=red](A,B,C)
   \tkzLabelPoints[above right](A,B,C)
\end{tikzpicture}   
\end{document} 

在此处输入图片描述

答案3

下面是使用 pgfplots 绘图类型的示例patch

在此处输入图片描述

\documentclass{standalone}

\usepackage{pgfplots}


\begin{document}

\begin{tikzpicture}
    \begin{axis}
    \addplot[patch,shader=interp]
    table[point meta=\thisrow{c}] {
        x y c
        % first patch:
        0 0 0.2
        1 1 0
        2 0 1

        % second patch:
        1 1 0
        2 0 -1
        3 1 0

        % third patch:
        2 0 0.5
        3 1 1
        4 0 0.5
    };
    \end{axis}
\end{tikzpicture}

\end{document}

并带有标签和连续阴影:

在此处输入图片描述

\documentclass{standalone}

\usepackage{pgfplots}


\begin{document}

\begin{tikzpicture}
    \begin{axis}
    \addplot[patch,shader=interp]
    table[point meta=\thisrow{c}] {
        x y c
        % first patch:
        0 0 0.2
        1 1 0
        2 0 1

        % second patch:
        1 1 0
        2 0 1
        3 1 0

        % third patch:
        2 0 1
        3 1 0
        4 0 0.5
    };
    \addplot[only marks,nodes near coords] % this produces labels
    table[point meta=explicit symbolic,meta=labels] {
        x y labels
        0 0 $a$
        1 1 $b$
        2 0 $c$
        3 1 $d$
        4 0 $e$
    };
    \end{axis}
\end{tikzpicture}


\end{document}

它使用默认轴配置并从输入表中读取点。该表有三列:一列用于 x,一列用于 y,一列用于颜色数据。颜色数据以线性方式映射到colormap可以配置的 中,您看到的是默认的。 告诉shader=interppgfplots 在三个角之间产生线性阴影,是颜色数据。

第二张图在同一轴上有两个图:一个产生几何图形,另一个产生nodes near coords。这是一个特殊的散点图,假设point meta包含放置在输入坐标处的节点的内容。在本例中,我使用了point meta=explicit symbolic表格输入,这意味着该meta列包含文本数据。我选择meta=labels识别包含数学模式文本的“标签”列。

您也可能对。。。有兴趣

  • axis lines=left它不会产生一个框,而是在其下限(“左”)产生轴线,

  • 带有三维图\addplot3(以及一个表列)

  • 其他输入格式(您的示例中的坐标也受支持,甚至带有颜色数据)

  • 遇到的选项的详细信息 + 更多示例请参阅 pdf 手册http://pgfplots.sourceforge.net/

答案4

我猜以下内容非常接近您所追求的:

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture} 
  \draw[->] (-5.0,0) -- (5.0,0) node[right] {$x$} coordinate(x axis);
  % Loop to generate ticks and labels
  \foreach \i in {-5,-4,...,5}
  \draw (\i,-2 pt) -- (\i,2 pt) node[above]{$\i$};
  \draw[->] (0,-5.0) -- (0,5.0) node[above] {$y$} coordinate(y axis); 
  \foreach \i in {-5,-4,...,5}
  \draw (-2 pt,\i) -- (2 pt,\i) node[right]{$\i$};
  \draw[red,fill] (0,0) node[left]{$a$} -- (1,2) node[right]{$b$} -- (0,3) node[left]{$c$} -- cycle; 
\end{tikzpicture} 
\end{document}

大多数内容都是基础知识,可以在手册或精彩存储库的例子。

相关内容