我正在尝试创建一个简单的图形,其中刻度标签无法正确对齐,因为坐标系倾斜。这是 MWE 代码:
\documentclass[a4paper,twocolumn]{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,positioning}
\begin{document}
\begin{figure}
\begin{center}
\begin{tikzpicture}
\node[anchor=south west, inner sep=0] (image) at (0.3,0.2) {\includegraphics[width=0.8\columnwidth]{asmmodes}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw (-0.02, 0.833) node [right]{1};
\draw (-0.02, 0.5) node [right]{2};
\draw (-0.02, 0.167) node [right]{3};
\draw (0.07, -0.03) node [text centered,above]{-4};
\draw (0.22, -0.03) node [text centered,above]{-2};
\draw (0.37, -0.03) node [text centered,above]{-1};
\draw (0.50, -0.03) node [text centered,above]{0};
\draw (0.65, -0.03) node [text centered,above]{1};
\draw (0.79, -0.03) node [text centered,above]{2};
\draw (0.94, -0.03) node [text centered,above]{4};
\draw (0.5, -0.03) node [text centered,below]{standard deviations};
\draw (-0.04, 0.5) node [text centered]{\rotatebox{90}{first three model shape parameters}};
\draw [thick,red] (0,0) -- (0,1) -- (1,1) -- (1,0) -- cycle;
\end{scope}
\end{tikzpicture}
\end{center}
\label{fig:asmmodes1}
\end{figure}
\end{document}
这给了我以下输出:
如您所见,由于坐标系倾斜,刻度标签排列不整齐。我不知道该怎么做。有人能帮我吗?
答案1
第一个问题:当你改变x
和y
而不改变原点时,你的轴就不正交了。你必须将原点移至image.south west
。
第二个问题:由于不为空,所以的锚点image
不在所包含图像的边框上outer sep
。您必须添加outer sep=0
以删除此边距。
\rotatebox
您可以使用rotate
选项来代替。
\documentclass[margin=1mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west, inner sep=0,outer sep=0] (image)
at (0.3,0.2) {\includegraphics[width=0.8\columnwidth] {example-image-a}};
\begin{scope}[
shift=(image.south west),
x={(image.south east)},y={(image.north west)}
]
\draw (-0.02, 0.833) node [right]{1};
\draw (-0.02, 0.5) node [right]{2};
\draw (-0.02, 0.167) node [right]{3};
\draw (0.07, -0.03) node [text centered,above]{-4};
\draw (0.22, -0.03) node [text centered,above]{-2};
\draw (0.37, -0.03) node [text centered,above]{-1};
\draw (0.50, -0.03) node [text centered,above]{0};
\draw (0.65, -0.03) node [text centered,above]{1};
\draw (0.79, -0.03) node [text centered,above]{2};
\draw (0.94, -0.03) node [text centered,above]{4};
\draw (0.5, -0.03) node [text centered,below] {standard deviations};
\draw (-0.04, 0.5) node [text centered,rotate=90] {first three model shape parameters};
\end{scope}
\end{tikzpicture}
\end{document}
答案2
问题实际上并不是转移,尽管它有帮助,因为它将坐标系带回到正交的常规轴。
问题是
\begin{scope}[x={(image.south east)},y={(image.north west)}]
这会使 x 和 y 单位向量扭曲,因为它并不完全垂直,我猜是因为(!) outer sep
。
答案3
在尝试了 Paul 和 Gonzalo 的建议后,我能够解决这个问题。我觉得 Gonzalo 的建议是将图像节点移回 (0, 0),这实际上解决了问题的根源。因此,我将描述图像节点的行更改为以下内容:
\node[anchor=south west, inner sep=0] (image) at (0, 0) {\includegraphics[width=0.9\columnwidth]{asmmodes}};
这给了我以下(期望的)结果:
谢谢你的协助。
[编辑]PaulGaborit 的答案实际上解决了这个问题。我的更改(记录在此答案中)只是避免了这个问题。