【问题标题】:Thicker lines in the legend of gnuplotgnuplot图例中的粗线
【发布时间】:2012-06-18 23:52:49
【问题描述】:

我正在用 gnuplot 绘制一些数据曲线,它们看起来像这样:

但是,图例中的线条样本太细了。当你有更多的曲线时,很难区分颜色。您可以使用“线宽”来增加曲线的粗细,例如,通过在绘图命令中添加“lw 3”,您会得到:

但是,这会增加各处的厚度。是否可以仅在图例中使线条变粗?我知道它可以通过对输出 .png 文件进行后处理来“以另一种方式”完成。但是有没有直接的方法,使用一些 gnuplot 设置/向导?

【问题讨论】:

    标签: gnuplot legend presentation


    【解决方案1】:

    不幸的是,我不知道如何控制键中线条的粗细,因为它们对应于正在绘制的线条。您可以通过在 gnuplot 中输入 help set key 来查看可以更改的内容。

    使用多图,您可以先绘制没有键的情节线,然后再次绘制“鬼线”的键。这是一个可以做到这一点的代码示例:

    set terminal png color size 800,600
    set output 'plot.png'
    
    set multiplot
    
    unset key
    
    plot '../batteries/9v/carrefour.txt' w lp, \
         '../batteries/9v/philips.txt' w lp, \
         '../batteries/9v/sony.txt' w lp
    
    set key; unset tics; unset border; unset xlabel; unset ylabel
    
    plot [][0:1] 2 title 'Carrefour' lw 4, \
         2 title 'Philips' lw 4, \
         2 title 'Sony' lw 4
    

    在第二个绘图命令中,函数 2(一个常数)以 0 到 1 的 y 范围绘制,所以它没有显示出来。

    【讨论】:

    • 哇,这真是天才 :) 我从来没有想到过!我不得不稍微修改一下,因为我的 gnuplot 不接受指定范围 ([][0:1]) 三次,只有一次。此外,还必须为第二个图取消设置 xlabel/ylabel。但除此之外,它就像一个魅力!谢谢!
    • 感谢您的更正,我在发布之前没有正确测试我的脚本 :)
    【解决方案2】:

    我看到了这篇文章,它给了我一个批判性的想法。 提供的解决方案在多图模式下不起作用,因为第二个绘图命令将触发第二个绘图,这很可能是不希望的。 作为一种解决方法,可以将原始数据设置为“notitle”,然后使用相同的线型和不同厚度的颜色绘制范围之外的数据以及所需的标题。我将在这里留下我当前的示例。它还包括我已声明的线条样式。所以我只是使用相同的线型(ls)来获得相同的颜色,但改变第二行的粗细。

         # for pngs
     set terminal pngcairo size 1600,600 font ',18' enhanced
     set output "pic_multi_kenngr_ana.png 
    
     set style line 2 lc rgb '#0ce90b' lt 1 lw 1.5 # --- green
     set style line 3 lc rgb '#09e0b3' lt 1 lw 1.5 #      .
     set style line 4 lc rgb '#065fd8' lt 1 lw 1.5 #      .
     set style line 5 lc rgb '#4e04cf' lt 1 lw 1.5 #      .
     set style line 6 lc rgb '#c702a9' lt 1 lw 1.5 #      .
     set style line 7 lc rgb '#bf000a' lt 1 lw 1.5 # --- red
    
     set multiplot layout 1,2 
     set xtics rotate
     set tmargin 5
    
    
     set xtics 12
     set grid xtics
    
     # set axis labels
    set ylabel 'T [K]'
    set xlabel 'Zeit [h]'
    
    # select range
    set xrange [0:48]
    set yrange [290.15:306.15]
    
    set title "(a) Bodentemperatur"
    set key top right Right 
    
    plot   'par_crank_hom01lvls.04.dat' u 1:3 with lines ls 7 notitle,\
           'par_crank_str01lvls.16.dat' u 1:3 with lines ls 2 notitle,\
           500  t 'z = 4 cm' ls 7 lw 4,\
           500  t 'z = 16 cm' ls 2 lw 4
    
    
    ################################################
    
    set title "(b) Bodenwärmestrom an der Oberfläche"
    set ylabel 'G [W m^{-2}]'
    set yrange[-110:110]
    unset key
    
    plot 'par_crank_str01_ghf.dat' u 1:3 with lines
    
    
    unset multiplot
    

    我希望这会对某人有所帮助

    【讨论】:

      【解决方案3】:

      一个更简单的解决方法(恕我直言)是明确定义颜色并将每行绘制两次,一次使用高 lw 作为键,并且标题出现在键中,但添加“每个 ::0 ::0" 这实际上最终没有绘制任何东西,并且曾经是正常的方式。见以下代码sn -p:

      plot data              u 0:1 w l linecolor rgb #1b9e77 lw 2 t "",\
           data every ::0::0 u 0:1 w l linecolor rgb #1b9e77 lw 4 t "Title"
      

      【讨论】:

      • 就我而言,我刚刚绘制了NaN,效果很好。
      【解决方案4】:

      为了扩展@Svalorzen 的NaN 注释,下面将绘制来自一些没有标题的datafile.txt 中宽度为1 的两条线,并创建具有指定标题和宽度5 的匹配空行,仅用于键:

      plot [][]\
          NaN title "Title1" w line lt 1 lc 1 lw 5,\
          NaN title "Title2" w line lt 1 lc 2 lw 5,\
          "datafile.txt" using 1:2 title "" w line lt 1 lc 1 lw 1,\
          "datafile.txt" using 1:3 title "" w line lt 1 lc 2 lw 1
      

      【讨论】:

        【解决方案5】:

        我找到了答案: Set key linewidth

        在你的情况下,必须是:

        plot '../batteries/9v/carrefour.txt' w l lw 1 linetype 1 notitle, 0/0 linetype 1 linewidth 5 title 'Carrefour' 
        rep '../batteries/9v/philips.txt' w l lw 1 linetype 2 notitle, 0/0 linetype 2 linewidth 5 title 'Philips' 
        rep '../batteries/9v/sony.txt' w l lw 1, linetype 3 notitle, 0/0 linetype 3 linewidth 5 title 'Sony' 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-30
          • 2012-08-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-28
          相关资源
          最近更新 更多