首页 > 解决方案 > GNUPlot:无法绘制指定颜色的二维散点图

问题描述

我正在尝试使用收到的建议制作 2D 散点图无法在 GNUPlot 中获取标签颜色

这导致我写:

$DATA << EOD
3.12960004005165    2.67469663590573    0.438527882947657
3.54159282682062    1.48608712150729    3.45059090334765
1.41832139944261    1.09739773669576    4.7851179962913
0.37050714994141    4.51679511956513    2.99273024822522
1.33417336450785    2.60931115605578    3.49852244355505
4.68608825227413    4.50263530942483    0.708639941290272
EOD
set datafile separator "\t"
set xlabel 'x'
set ylabel 'y'
set title 'title'
set terminal svg
set output 'scatterplotx_y.svg'
set key off
myColor(col) = int("0x".strcol(col)[3:])
plot $DATA using 1:2:(myColor(3)) pt 7

我正在使用 gnuplot 5.2 补丁级别 8

我也试过

plot $DATA u 1:2:3 with lines palette

GnuPlot 中的 Line plot 建议,其中线条颜色是我的数据文件中的第三列?但这不起作用

plot $DATA u 1:2:3 with points color $3

我现在正在使用调色板:

set palette defined (0 "red", 0.3 "orange", 0.625 "green", 0.85 "blue", 1 "dark-violet")

我的问题:

如何绘制由 [0,1] 中的数字确定的从红色到紫色的颜色,这里是第 3 列?其中红色是 0,1 是紫色,彩虹的所有颜色都在中间?

标签: gnuplotrgb

解决方案


您在 plot 命令中缺少一个关键字来告诉程序第三列的用途。

plot $DATA u 1:2:3 with lines linecolor palette

否则程序会忽略额外的列,因为它不知道它是 az 坐标、点大小还是其他各种可能性。

实际上,选项中还有更多选择linecolor palette。它可以是linecolor palette zorlinecolor palette fractionlinecolor palette cb

  • 默认是第一个palette z。它会自动缩放值以使用此图中数据的整个调色板范围。
  • palette fraction表示第 3 列是一个介于 0 和 1 之间的数字,用于选择远离调色板范围的颜色。
  • palette cb表示第 3 列中的值是指由 控制的单独颜色范围set cbrange [min:max]

推荐阅读