8

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

用细线绘图

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

用粗线绘制

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

4

5 回答 5

7

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

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

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 的范围内,所以它没有显示出来。

于 2012-06-15T22:18:06.833 回答
4

我遇到了这篇文章,它给了我一个批判性的想法。提供的解决方案在多图模式下不起作用,因为第二个绘图命令将触发第二个绘图,这很可能是不希望的。作为一种解决方法,可以将原始数据设置为“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

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

于 2014-10-31T11:41:54.020 回答
1

一个更简单的解决方法(恕我直言)是明确定义颜色并将每行绘制两次,一次使用高 lw 作为键,并且标题出现在键中,但添加“每个 ::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"
于 2016-08-16T07:47:19.383 回答
1

为了扩展NaN@Svalorzen 的评论,下面将绘制一些 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
于 2019-09-08T22:03:06.607 回答
0

我找到了答案: 设置关键线宽

在您的情况下,必须是:

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' 
于 2018-11-26T22:46:47.807 回答