我已经使用 Tikz 2 天了,在创建图形时偶然发现了以下问题,但无法完全解释我做错了什么。
我想在图形中添加箭头或路径,如果我使用绝对坐标,它们似乎被正确处理。当添加增量坐标时,位置/基向量似乎被正确解释,但方向向量似乎被完全错误地处理。
有人能告诉我我做错了什么或者这是一个功能/错误吗?
附件是 MWE 和我得到的结果以及我期望的结果(硬编码)。
提前致谢!
\documentclass[tikz]{article}
\usepackage{tikz}
\usepackage[top=25mm, left=25mm, right=25mm, bottom= 25mm]{geometry}
\usetikzlibrary{arrows}
\usepackage{xcolor}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset
{
width = 12cm,
height = 43mm,
compat=newest,
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\draw[step=1, color=gray!50, thin] (0,-5) grid (15,5);
\begin{groupplot}
[
group style={group size=1 by 2, vertical sep = 1cm,},
axis x line = center,
axis y line = left,
xmax = 10,
domain = 0:10,
samples = 100,
]
\nextgroupplot[title = What I get]
\addplot[color = red] {2*cos(180*x/pi)};
\draw[blue,dashed] (0,1.5) rectangle ++(8,-3);
% Base seems correct but target point currupt
\draw[->,green,very thick] (3,0) -- ++(5,1.5);
\nextgroupplot[title = What I want]
\addplot[color = red] {2*cos(180*x/pi)};
\draw[blue,dashed] (0,1.5) rectangle (8,-1.5);
\draw[->,green,very thick] (3,0) -- (8,1.5);
\end{groupplot}
\end{tikzpicture}
\end{figure}
\end{document}
答案1
看来你找到了漏洞:所有相对定位接缝都会在原点上方偏移一定量。您可以看到此偏移 ++(0,0),就像代码中的这一行:
% showing buggy position ++(0,0),
\draw[red,thick] (3,0) ++(0,0) circle[radius=2pt];
我在位置 (3,2) 处得到一个(裁剪的半个)圆。绘制的函数范围从 -2 到 2。如果我更改余弦的缩放比例,这个半圆将移动到可见绘图窗口顶部的 (3,0) 上方。
我无法判断这个错误是否已知。
为了避免在代码中重复声明点,您可以使用 morecoordinate
来定义绘图的关键点,如果需要过滤已定义点的水平位置或垂直位置,则可以使用 (...|-...) 样式的点声明。我在下面的代码中进行了说明:
\nextgroupplot[title = What I get]
\addplot[color = red] {2*cos(180*x/pi)};
\draw (0,-1.5) coordinate (b1)
(8,1.5) coordinate (b2)
(3,0) coordinate (a1);
\draw[blue,dashed] (b1) rectangle (b2);
\draw[->,green,very thick] (a1) -- (b2);
% making a new box from position (3,0) of same size of previous
\draw (a1|-b1) rectangle (b2);
结果: