所以,我想要一个有两个 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 在他的评论中指出的那样。现在我纠正了你的代码并添加了一些小改进。