【问题标题】:Define palette color based on the range of z values from a data file根据数据文件中的 z 值范围定义调色板颜色
【发布时间】:2014-12-24 20:45:38
【问题描述】:

假设我有一个包含 x y z 列的数据文件,如下所示:

  -3.063052922487259      -3.141592741012573       401.3000000000000    
  -3.063052922487259      -3.063052922487259       1.290000000000000    
  -3.063052922487259      -2.984513103961945       0.920000000000000       

  -2.984513103961945      -3.141592741012573       0.100000000000000    
  -2.984513103961945      -3.063052922487259       10.80000000000000    
  -2.984513103961945      -2.984513103961945       1001.290000000000       

  -2.905973285436630      -2.984513103961945       514.4000000000000    
  -2.905973285436630      -2.905973285436630       131.0300000000000    
  -2.905973285436630      -2.827433466911316       129.3300000000000

z 列中的值范围将定义数据点的颜色。例如,在z列上,如果值在0.0和0.3之间,数据点的颜色将设置为蓝色;如果介于 0.3 和 1 之间,数据点的颜色将设置为橙色;如果在 400 到 1000 之间,数据点的颜色将设置为海军蓝。

所以我写了一些这样的代码:

set xrange [0:15]
set yrange [0:-15]
set zrange [0:1400]
set cbrange [0.001:1400]
set palette defined ( 0 "goldenrod", 0.3 "blue", 1 "orange", 2 "cyan", 4 "yellow", 10 "green", 20 "pink", 50 'gold', 100 'purple', 400 'navy', 1000 "red")
set palette maxcolors 11
unset key
unset surface
splot "DATA.dat" using 1:2:3 with image

这不起作用。有什么帮助吗?

进一步更新: 我真的想更清楚地解释为什么不起作用,但 Stack Overflow 不允许我进一步解释,因为他们要求我有 10 个声望点才能发布图像结果。因此,由于缺乏声誉,我无法发布我的结果。但是我确实修改了我的数据集,所以你现在可以看到 xy 数据是等距的。

所以我只是用文字来描述问题,而不是图像,即颜色框错误。根据我的代码,400 到 1000 之间应该是海军蓝(只有一种颜色)。但是图片上的颜色框显示,在400到1000之间,有5种不同的海军颜色,从浅海军蓝到深海军蓝。请问400到1000之间我怎么能只有一种海军颜色?

【问题讨论】:

  • 首先:“不起作用”是什么意思?而且 gnuplot 通常也会给出错误信息,这有助于理解(或只是定位)问题。我可以看到的一个问题是您的 xy 数据不在 image 模式所需要的等距离网格上。
  • 为什么我的以下评论被其他人删除,没有任何通知? “嗨 sweber。我已尽力更新我的问题。谢谢!”

标签: range gnuplot color-palette


【解决方案1】:

maxcolors 选项在您的情况下无法正常工作,因为它只会离散化底层颜色渐变。您可以使用test palette 命令查看实际调色板的外观:

set palette defined ( 0 "goldenrod", 0.3 "blue", 1 "orange", 2 "cyan", 4 "yellow", 10 "green", 20 "pink", 50 'gold', 100 'purple', 400 'navy', 1000 "red")
set palette maxcolors 11
test palette

您还必须记住,调色板定义中使用的数字不是cb 轴上的绝对值,但值(在您的情况下为 0 到 1000)映射到实际的 cbrange ( 0.001 到 1400)。

为了获得具有恒定颜色值的区域,请执行以下操作:

set palette defined (0 "goldenrod", \
                     0 "blue", 0.3 "blue", \
                     0.3 "orange", 1 "orange", \
                     1 "cyan", 2 "cyan", \
                     2 "yellow", 4 "yellow", \
                     4 "green", 10 "green", \
                     10 "pink", 20 "pink", \
                     20 "gold", 50 "gold", \
                     50 "purple", 400 "purple", \
                     400 "navy", 1000 "navy", \
                     1000 "red", 1400 "red")
test palette

【讨论】:

  • 谢谢!有用!我不能为你的答案投票 +1,因为投票需要 15 个声望点。
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
相关资源
最近更新 更多