我需要绘制一个三角形,顶点为(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}
它给:
关键点基本上有两点:
允许
foreach
一次性指定将放置在给定位置(coordinate
即(0,0))的;label
position
above left
使用
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=interp
pgfplots 在三个角之间产生线性阴影,是颜色数据。
第二张图在同一轴上有两个图:一个产生几何图形,另一个产生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}
大多数内容都是基础知识,可以在手册或精彩存储库的例子。