我被要求尝试将刻度标签贴ytick
在不是位于地块西北角的正上方,因为这很不寻常。就我个人而言,我倾向于同意。它很容易工作,但above left
可能会更好一点。但实际上,最好将它放在 y 轴标签的正上方,然后旋转 90 度。
根据 Jake 的帖子这里,我想到了一个想法,将比例尺定位在正上方,ylabel
方法是将其锚定到ylabel
每个组图的节点上。但由于我尚未弄清楚的原因,这对组图不起作用。
但总而言之,我打算使用一种可靠的方法来锚定刻度标签xlabel
,ylabel
因为微调位置是一项非常耗时的任务。:(
ylabel
是否可以将刻度标签固定在组图的北端?
我想要的非常酷的模型(我想要的是蓝色的、看起来很有趣的刻度标签,请想象一下旁边的红色标签xlabel
)
MWE(不起作用)
\documentclass[
a4paper
]{scrartcl}
\usepackage{
lmodern,
tikz,
pgfplots,
}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepgfplotslibrary{groupplots}
%\pgfplotsset{
%x label style={at={(rel axis cs:0.5,-0.15)}, name=xlabel},
%y label style={at={(rel axis cs:-0.2,0.5)}, name=ylabel},
%}
\begin{document}
\begin{center}
\begin{tikzpicture}[font=\small]
\begin{groupplot}[
group style={
group size=2 by 1,
horizontal sep=0.2cm,
vertical sep=1.5cm,
ylabels at=edge left,
yticklabels at=edge left,
},
%
ymin=300,
ymax=1300,
%
xlabel={The label for the x-axis},
ylabel={Some y-values},
%
xlabel style={at={(rel axis cs:0.5,-0.15)}, name={xlabel} },
ylabel style={at={(rel axis cs:-0.2,0.5)}, name={ylabel}},
legend style={at={(xlabel.south)}, anchor=north, yshift=-1ex},
%
every x tick scale label/.append style={
at={(xlabel.east)}, anchor=west, inner sep=0pt
},
every y tick scale label/.append style={
at={(ylabel.north)}, rotate=90, anchor=south, inner sep=0pt
},
%
scale ticks above exponent={2},
]
\nextgroupplot
\addplot[only marks] coordinates{(2000,1200) (3000,500)};
\addlegendentry{Word}
\nextgroupplot
\addplot[only marks] coordinates{(2000,1200) (4000,400)};
\addlegendentry{Text}
\end{groupplot}
\end{tikzpicture}
\end{center}
\end{document}
答案1
以全自动方式执行此操作非常困难,需要对几个内部宏进行重大更改。如果您可以接受手动提供缩放指数的半自动解决方案,则可以定义一种新样式
\pgfplotsset{
henry's scale label/.style={
y coord trafo/.code=\pgfmathparse{##1/(1e#1)},
ylabel style={
append after command={
node [rotate=90, anchor=base west] at (\tikzlastnode.base east) {$\cdot{10^{#1}}$}
}
}
}
}
在您的示例中,您可以使用以下方式调用henry's scale label=3
:
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{
henry's scale label/.style={
y coord trafo/.code=\pgfmathparse{##1/(1e#1)},
ylabel style={
append after command={
node [rotate=90, anchor=base west] at (\tikzlastnode.base east) {$\cdot{10^{#1}}$}
}
}
}
}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={
group size=2 by 1,
ylabels at=edge left,
yticklabels at=edge left,
},
ymin=300, ymax=1300,
xlabel={The label for the x-axis},
ylabel={Some y-values},
scale ticks above exponent={2},
henry's scale label=3
]
\nextgroupplot
\addplot[only marks] coordinates{(2000,1200) (3000,500)};
\addlegendentry{Word}
\nextgroupplot
\addplot[only marks] coordinates{(2000,1200) (4000,400)};
\addlegendentry{Text}
\end{groupplot}
\end{tikzpicture}
\end{document}