Gnuplot 与线宽无关的设定点大小
我在gnuplot中定义了以下线条样式:Gnuplot 与线宽无关的设定点大小,gnuplot,Gnuplot,我在gnuplot中定义了以下线条样式: set linetype 1 lc rgb "red" lw 3 pt 7 set linetype 3 lc rgb "red" lw 1 pt 7 看起来似乎这些点的部分大小来自线宽。我在循环线型循环的绘图中使用这些样式,对cspline和相应的点使用相同的样式,因此我看不到为点定义单独样式的简单方法 我得到的结果如下: 这些点对应于pointsize,但线型1中的点仍然稍大(可能来自较厚的边框) 这两种样式中的点是否可能大小相同 对于Migue
set linetype 1 lc rgb "red" lw 3 pt 7
set linetype 3 lc rgb "red" lw 1 pt 7
看起来似乎这些点的部分大小来自线宽。我在循环线型循环的绘图中使用这些样式,对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由循环设置,并由打印命令的最后一部分使用。欢迎就另一种方法提出建议 对于某些端子,填充点类型的大小取决于线宽,因为它们有边框。所有基于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
缩放因子的选择必须手动确定。对于您的特定情况,您可以设置更多样式,并通过do For
循环自动执行(重用代码):
使用一些简单的数据文件:
事实上,点的边界取决于线宽。我认为最简单的方法是稍微减小线型1的点大小(尝试使用ps0.9
)。这愚弄了我的眼睛-足够好了!我不明白为什么你不能独立绘制点和线-你能分享你代码的相关部分吗?如果使用变量选择样式,例如i
,则可以使用例如(i+100)
定义补充样式,并对线条使用lt 1
,对点使用lt 101
。@Miguel Yes,根据进一步的要求,这也可以起作用:不能使用带有linespoints示例的图例,也不能使用线型循环。至于linetype cycle
你也是对的,尽管它可以被绕过(或多或少是“丑陋的”)。我实际上不希望在图例中使用linespoints样式。这会改变答案吗?@Christoph谢谢你的测试,我上了一台带有pngcairo的机器,所以贴了一张图。我本来想避免生成更多的样式,但既然可以如此优雅地完成,为什么还要麻烦呢。感谢上帝给了三元运算符。
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