设定点尺寸与线宽无关

时间:2014-10-28 13:49:30

标签: gnuplot

我在gnuplot中定义了以下线型:

set linetype 1 lc rgb "red" lw 3 pt 7
set linetype 3 lc rgb "red" lw 1 pt 7

似乎这些点从线宽中得出了它们的大小的一部分。我在plot for循环中使用linetype cycle循环使用这些样式,使用cspline和相应点的相同样式,所以我没有看到任何简单的方法来定义一个分数的风格。

我得到这样的结果: different size points

积分回复pointsize,但线型1中的点仍然略大(可能来自较粗的边界)。

是否有可能让这两种风格的分数大小相同?

回应Miguel的评论,我的用例的一个更完整的例子是:

filenames = "A B C D"

set linetype 1 lc rgb "blue"        lw 3 pt 7
set linetype 2 lc rgb "red"         lw 3 pt 7
set linetype 3 lc rgb "blue"        lw 1 pt 7
set linetype 4 lc rgb "red"         lw 1 pt 7
set linetype cycle 4

plot for [file in filenames] file.".csv" \
     using 1:2
     title file \
     smooth csplines, \
     for [file in filenames] file.".csv" \
     u 1:2 with points notitle

线型5-8由循环设置,并由绘图命令的最后一部分使用。建议采用另一种方式来做到这一点!

2 个答案:

答案 0 :(得分:2)

对于您的特定情况,您可以设置更多样式,并使用do for循环(重用您的代码)自动执行:

filenames = "A B C D"

do for [i=0:1] {
set linetype (4*i+1) lc rgb "blue"        lw (i == 1 ? 0 : 3) pt 7
set linetype (4*i+2) lc rgb "red"         lw (i == 1 ? 0 : 3) pt 7
set linetype (4*i+3) lc rgb "blue"        lw (i == 1 ? 0 : 1) pt 7
set linetype (4*i+4) lc rgb "red"         lw (i == 1 ? 0 : 1) pt 7
}
set linetype cycle 8

plot for [file in filenames] file.".csv" \
     using 1:2 \
     title file \
     smooth csplines, \
     for [file in filenames] file.".csv" \
     u 1:2 with points notitle

使用一些简单的数据文件:

enter image description here

答案 1 :(得分:1)

对于某些终端,填充点类型的大小取决于线宽,因为它们具有边框。所有基于cairo的终端(pdfcairo,pngcairo,wxt和cairolatex)就是这种情况,而其他终端如svg,postscript,qt则不会显示这种行为。

考虑测试用例

set linetype 1 lc rgb "red" lw 3 pt 7
set linetype 3 lc rgb "red" lw 1 pt 7

set samples 11
set style function linespoints
plot x lt 1, x + 0.5 lt 3

考虑到您希望在图例中包含线点样本,您最好的选择是减少线宽较大的线型的点大小,例如

set linetype 1 lc rgb "red" lw 3 pt 7 ps 0.9

必须手动确定比例因子的选择。