在gnuplot的传说中更加强烈的线条

时间:2012-06-15 21:51:57

标签: gnuplot legend presentation

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

Plot with thin lines

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

Plot with thick lines

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

5 个答案:

答案 0 :(得分:7)

不幸的是,我不知道如何控制键中线条的粗细,因为它们对应于绘制的线条。您可以在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(常量)正在绘制,y范围为0到1,因此它不会显示。

答案 1 :(得分:2)

我跑过这篇文章,它给了我一个批判性的想法。 提供的解决方案在多时隙模式下不起作用,因为第二个绘图命令将触发第二个绘图,这很可能是不需要的。 作为一种解决方法,可以将原始数据设置为" notitle",然后使用相同的线型和不同厚度的颜色将数据绘制在范围之外,并使用所需的标题。我在这里留下我当前的例子。它还包括我声明的线条样式。所以我只使用相同的linestyle(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

我希望这能帮到某人

答案 2 :(得分:1)

更简单的解决方法(imho)是明确定义颜色并将每一行绘制两次,一次使用高lw作为键,并且标题也出现在键中,但添加“every :: 0” :: 0“有效地最终没有绘制任何东西,一旦正常的方式。请参阅以下代码段:

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"

答案 3 :(得分:1)

要扩展@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

答案 4 :(得分:0)

我为此找到了答案: 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'