代码之家  ›  专栏  ›  技术社区  ›  con

GNUPlot:无法绘制指定颜色的二维散点图

  •  0
  • con  · 技术社区  · 4 年前

    我正试图使用我收到的建议制作一个二维散点图 Cannot get labels to color in 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
    

    建议由 Line plot in GnuPlot where line color is a third column in my data file? 但这行不通

    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]中的数字决定,这里是第三列?红色是0,1是紫色,彩虹的所有颜色都在中间?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Ethan    4 年前

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

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

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

    实际上,还有更多的选择 linecolor palette 选项。可能是 linecolor palette z linecolor palette fraction linecolor palette cb .

    • 默认为第一个 palette z 。它自动缩放值,以使用此图中数据的整个调色板范围。
    • palette fraction 意味着第三列是一个介于0和1之间的数字,用于选择调色板范围内的颜色。
    • palette cb 表示第3列中的值是指由以下参数控制的单独颜色范围 set cbrange [min:max] .
        2
  •  0
  •   con    4 年前

    颜色的渐变称为 palette 在GNUPlot

    set palette defined (0 "red", 0.3 "orange", 0.625 "green", 0.85 "blue", 1 "dark-violet")
    
    $DATA << EOD
    4.47576802144342    3.96170057191894    0.965077628065902
    0.476983571877412   3.8599136240968 4.12799054681166
    4.87640196476667    4.52001611814199    3.14028639266551
    2.261549757545  2.24147530185633    2.92342461107236
    0.0119463593595448  3.63583286650188    1.78255268707661
    3.4088757971039 2.11565314670896    1.62679271015364
    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
    plot $DATA u 1:2:3 with points palette
    

    我不知道为什么,但是 plot $DATA u 1:2:3 with points palette 不知怎么地知道第三个数据点是颜色。