这是我的第一篇帖子,所以如果我做错了什么,请纠正我。我想用节点绘制一个 tikzpicture,并在这里使用绝对坐标。我不知道为什么,但不知何故我的坐标似乎是相对的而不是绝对的。例如,在这个代码示例中,一个节点应该位于 (0,0),但却位于坐标系的负区域的某个位置。我做错了什么?
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\tikzset{>=latex}
\begin{document}
\begin{tikzpicture}[scale=0.8]
\pgfplotsset{
width =0.9\textwidth,
height = 0.9\textwidth,
legend cell align=left,
legend pos=outer north east,
legend style={draw=none, anchor=north west, at={(1.1,1)},font=\Large,
xmin=-124, xmax=160,
},
every tick label/.append style={font=\Large},
yticklabel style={text width=3em,align=right},
}
\begin{axis}[grid=major, ymin=-50, ymax=150]
\node(0) at (0,0)[rectangle,draw, minimum size = 5pt, fill = black,
inner sep = 0pt]{};
\node(1) at (-5, 70)[minimum size = 3.7pt, fill= white, inner sep = 0pt,
shape = circle, draw]{};
\node(2) at (-17, 69)[minimum size = 3.7pt, fill= white, inner sep = 0pt, shape = circle, draw]{};
\node(3) at (-19, 85)[minimum size = 3.7pt, fill= white, inner sep = 0pt, shape = circle, draw]{};
\node(4) at (9, 99)[minimum size = 3.7pt, fill= white, inner sep = 0pt, shape = circle, draw]{};
\node(5) at (15, 82)[minimum size = 3.7pt, fill= white, inner sep = 0pt, shape = circle, draw]{};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
需要注意的是,你不仅使用 Ti钾Z,还有 PGFPlots。如第 4.17.1 节(访问图形元素中的轴坐标)中所述手动的,PGFPlots 中有不同的坐标系:
axis cs:
轴坐标系rel axis cs:
相对坐标系,其中完整的轴向量被规范化为 1axis direction cs:
允许使用相对位置和方向axis description cs:
对于(当然)轴描述很有用ticklabel cs:
,,,用于xticklabel cs:
定位刻度标签yticklabel cs:
zticklabel cs:
xticklabel* cs:
、、yticklabel cs:
与zticklabel cs:
无星号版本相同,但不考虑任何刻度标签的大小
全部这些与默认的 Ti 不同钾Z 坐标系。对于你的情况,你可能希望使用轴坐标系axis cs:
,将节点放置在轴内的绝对坐标上。@Thruston在他的评论中说,你可以在这个(或上述任何其他)坐标系中放置一个节点
\node at (axis cs:0,0) {};
PGFPlots 的开发人员已将 PGFPlots 设计为完全向后兼容。新功能(会使旧图表在新版本中看起来不同)默认情况下处于禁用状态,必须手动启用。这可以通过以下方式完成
\pgfplotsset{compat=*version*}
其中*version*
PGFPlots 版本号是,例如1.11
或1.13
。如评论中所示@Torbjørn T.从版本1.11
开始,axis cs:
坐标系是默认的,因此您不需要在每次使用时都指定它。因此,\pgfplotsset{compat=1.13}
在您的序言中,图表将按照您的预期显示,而无需对您的代码进行任何更改。
小提示:您可以为每个绘制的点指定选项[minimum size=3.7pt, fill=white, inner sep=0pt, shape=circle, draw]
。如果您以后想更改它,则必须遍历所有节点并进行更改。或者,您可以使用
\begin{tikzpicture}[scale=0.8,
mydot/.style={minimum size=3.7pt, fill=white, inner sep=0pt, shape=circle, draw}
]
\node[mydot] at (-5, 70) {};
\end{tikzpicture}
这样,您只需指定一次样式。