首页 > 解决方案 > 用于 splot 3D 错误表面的 gnuplot 调色板:对称颜色

问题描述

我正在绘制一个 3D 表面(我在文本文件中的矩阵 8x10 上有 z 值);z 值代表误差,例如从 -20% 到 +10%。我想以对称的方式用颜色绘制它,这意味着例如 -10% 需要与 +10% 的红色强度相同。0% 左右的值(非常小的错误)需要为绿色(或蓝色或其他)。所以这样一来,红色越强烈,误差就越大(不管是正还是负)。我正在使用:

# line styles
set style line 1 lc rgb '#B2182B' # red
set style line 2 lc rgb '#D6604D' # red-orange
set style line 3 lc rgb '#F4A582' # 
set style line 4 lc rgb '#FDDBC7' # pale orange
set style line 5 lc rgb '#D1E5F0' # pale blue
set style line 6 lc rgb '#92C5DE' # 
set style line 7 lc rgb '#4393C3' # medium blue
set style line 8 lc rgb '#2166AC' # dark blue
# palette
set palette defined ( 0 '#B2182B',\
                      1 '#D6604D',\
              2 '#F4A582',\
              3 '#FDDBC7',\
              4 '#D1E5F0',\
              5 '#92C5DE',\
              6 '#4393C3',\
              7 '#2166AC' )
set dgrid3d 30,30 gauss 1
splot 'file.csv' matrix using 1:2:3 with lines palette title 'Error (%)'

我从 ColorBrewer RdBu 中获取了线条样式和调色板。我也尝试使用以零为中心statsset cbrange但没有成功。

标签: plot3dgnuplotsurfacecolor-palette

解决方案


“没有成功”不足以进行调试。它应该可以提供所需的对称范围,因为set cbrange [-foo : foo]". The numeric values given in the set palette` 命令并不重要,只要它们是对称的。这是一个例子

set palette defined (-1 "dark-red", 0 "grey90", 1 "dark-red")
set cbrange [-15 : 15]
set xyplane at 0
splot besj0(y)*x*x with pm3d

在此处输入图像描述


推荐阅读