我正在使用 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}