PGF 图,曲线下方和上方两种颜色

PGF 图,曲线下方和上方两种颜色

我正在使用 PGF 图,并希望为我的图填充两种颜色。一种颜色表示正值,另一种颜色表示负值。到目前为止,我为整个图填充了一种颜色。

\begin{tikzpicture}[scale=1.4]
\begin{axis}[no markers, scale only axis,ylabel={SOI}, axis on top=true, axis x line=below,axis y line=middle]
\addplot {sin(x)} \closedcycle;
%\addplot [red, fill] table[x=Year,y=INDEX,col sep=comma] {data/SOIvRainfall.csv} \closedcycle;
\end{axis}
\end{tikzpicture}

答案1

您可以使用min(a,b)max(a,b)函数,将图作为一,将零作为另一个参数来获取函数的正部分和负部分。对于表格/文件的图,您必须使用y expr\thisrow{}

代码

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}
[   xlabel=degree,
    ylabel=sin,
    no markers,
]
\addplot[fill=cyan,draw=blue!50!black,thick] table[x=deg,y expr={max(\thisrow{val},0)}] {
deg val
-400    -0.64
-380    -0.34
-360    0.00
-340    0.34
-320    0.64
-300    0.87
-280    0.98
-260    0.98
-240    0.87
-220    0.64
-200    0.34
-180    0.00
-160    -0.34
-140    -0.64
-120    -0.87
-100    -0.98
-80 -0.98
-60 -0.87
-40 -0.64
-20 -0.34
0   0.00
20  0.34
40  0.64
60  0.87
80  0.98
100 0.98
120 0.87
140 0.64
160 0.34
180 0.00
200 -0.34
220 -0.64
240 -0.87
260 -0.98
280 -0.98
300 -0.87
320 -0.64
340 -0.34
360 0.00
380 0.34
400 0.64
} \closedcycle;

\addplot[fill=orange,draw=orange!50!black,thick] table[x=deg,y expr={min(\thisrow{val},0)}] {
deg val
-400    -0.64
-380    -0.34
-360    0.00
-340    0.34
-320    0.64
-300    0.87
-280    0.98
-260    0.98
-240    0.87
-220    0.64
-200    0.34
-180    0.00
-160    -0.34
-140    -0.64
-120    -0.87
-100    -0.98
-80 -0.98
-60 -0.87
-40 -0.64
-20 -0.34
0   0.00
20  0.34
40  0.64
60  0.87
80  0.98
100 0.98
120 0.87
140 0.64
160 0.34
180 0.00
200 -0.34
220 -0.64
240 -0.87
260 -0.98
280 -0.98
300 -0.87
320 -0.64
340 -0.34
360 0.00
380 0.34
400 0.64
} \closedcycle;
\end{axis}
\end{tikzpicture}

\end{document}

结果

在此处输入图片描述

相关内容