沿次轴旋转标签

沿次轴旋转标签

所以,我想要一个有两个 y 轴的图 - 完成了。但是,由于标签只包含一个符号,我希望它们水平书写。这通常通过 rotate=-90 来实现。这有效,但只在一侧有效。我怎样才能让它在次轴上处于正确的方向?

这是一个最小的例子:

\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
t  percentage  absolute
.1  15     30      
.2  2     40     
.3  25     50      
.4  27.5     55     
.5  30     60      
.6  32     64
    }\datatable
\begin{figure}
\begin{tikzpicture}
\pgfplotsset{
    scale only axis,
    width=0.85\textwidth,
    height=0.5\textwidth,
axis x line=bottom
}
\begin{axis}[ymin=0,ymax=64,
ylabel=$\Sigma$,ylabel style={rotate=-90},
axis y line=right,
    scaled ticks=true]
\addplot[only marks,red,mark=o] table[x expr=\coordindex,y=absolute]{\datatable}; \label{plot_one}
\end{axis}
\begin{axis}[ymajorgrids,ymin=0,ymax=100,
xlabel=Subject no,
ylabel=$\%$,ylabel style={rotate=-90},
scaled ticks=true,
axis y line=left]
\addplot[only marks,green] table[x expr=\coordindex,y=percentage]{\datatable};
\addplot[tick=none] table[x expr=\coordindex, y={create col/linear regression={y=percentage}}] % compute a linear regression from the input table
{\datatable};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}

给予

注意旋转的“%”,但不受影响的“Σ”

关于如何旋转 Σ 有什么建议吗?

答案1

使用

axis y line*=right,   % and axis y line* = left too

而不是axis y line=right,星号版本仅影响轴线,而其他内容则保留,例如轴标签的位置、刻度线等。由于您在环境\pgfplotsset内部使用tikzpicture,因此最好将ylabel style={rotate=-90},其添加进去。要从轴中删除箭头,请axis line style={-},使用\pgfplotsset

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.12}
\pgfplotstableread{
t  percentage  absolute
.1  15     30
.2  2     40
.3  25     50
.4  27.5     55
.5  30     60
.6  32     64
    }\datatable
\begin{document}

\begin{tikzpicture}
\pgfplotsset{
    scale only axis,
    width=0.85\textwidth,
    height=0.5\textwidth,
axis x line=bottom,
axis line style={-},          %% <--- here
ylabel style={rotate=-90},    %%<--- here
}
\begin{axis}[ymin=0,ymax=64,
ylabel=$\Sigma$,
axis y line*=right,
    scaled ticks=true,
    ]
\addplot[only marks,red,mark=o] table[x expr=\coordindex,y=absolute]{\datatable}; \label{plot_one}
%\addlegendentry{Sum watched trials}
\end{axis}
\begin{axis}[ymajorgrids,ymin=0,ymax=100,
xlabel=Subject no,
ylabel=$\%$,
%y unit label=$\%$,
scaled ticks=true,
axis y line*=left]
\addplot[only marks,green] table[x expr=\coordindex,y=percentage]{\datatable};
\addplot[tick=none] table[x expr=\coordindex, y={create col/linear regression={y=percentage}}] % compute a linear regression from the input table
{\datatable};
\end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

你走的路是对的...你只需要添加

 style={rotate=-90},

到第二个axis,或者更好的是,将它与其他常用参数一起放入\pgfplotsset{...}。如果您在此处添加set layers,您将获得没有箭头的图像边框。

在此处输入图片描述

稍微重新排列并简化您的代码,生成上面的图像:

\documentclass[border=2mm,
               preview]{standalone}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
    \pgfplotstableread{
    t  percentage  absolute
    .1  15     30
    .2  2     40
    .3  25     50
    .4  27.5     55
    .5  30     60
    .6  32     64
        }\datatable

    \begin{document}
\begin{tikzpicture}
% let both axes use the same layers
    \pgfplotsset{set layers,
    ylabel style={rotate=-90},
        scaled ticks=true,
                }
\begin{axis}[
    ymajorgrids,
    ymin=0,  ymax=100,
    xlabel=Subject no,
    ylabel=$\%$,
    axis y line*=left]
\addplot[only marks,green] table[x expr=\coordindex,y=percentage]{\datatable};
\addplot[tick=none] table[x expr=\coordindex, y={create col/linear regression={y=percentage}}] % compute a linear regression from the input table
{\datatable};
\end{axis}
%
\begin{axis}[
    ymin=0,ymax=70,
    ylabel=$\Sigma$,
    axis y line*=right]
\addplot[only marks,red,mark=o] table[x expr=\coordindex,y=absolute]{\datatable}; \label{plot_one}
\end{axis}
\end{tikzpicture}
    \end{document}

编辑:第一次我误解了你的问题,正如 Harish Kumar 在他的评论中指出的那样。现在我纠正了你的代码并添加了一些小改进。

相关内容