我在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和相应点的相同样式,所以我没有看到任何简单的方法来定义一个分数的风格。
我得到这样的结果:
积分回复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由循环设置,并由绘图命令的最后一部分使用。建议采用另一种方式来做到这一点!
答案 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
使用一些简单的数据文件:
答案 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
必须手动确定比例因子的选择。