gnuplot:为什么线宽0的宽度不是零?

gnuplot:为什么线宽0的宽度不是零?,gnuplot,width,line,linewidth,Gnuplot,Width,Line,Linewidth,lw 0没有零线宽(即不可见)的原因是什么 我在gnuplot手册中找到了: 线宽和点大小是当前值的乘数 终端的默认宽度 好的,如果lw 0是一个乘数,那么得到的线宽应该是零,与终端的默认线宽无关 这样做的原因是最终有可能将与linespoints一起使用,并在与lines和与points之间的循环中以编程方式切换 代码: ### linewidth 0 isn't zero reset session set key out set yrange[-0.9:10.9] set ytics 1

lw 0
没有零线宽(即不可见)的原因是什么

我在gnuplot手册中找到了:

线宽和点大小是当前值的乘数 终端的默认宽度

好的,如果
lw 0
是一个乘数,那么得到的线宽应该是零,与终端的默认线宽无关

这样做的原因是最终有可能将
与linespoints
一起使用,并在
与lines
与points
之间的循环中以编程方式切换

代码:

### linewidth 0 isn't zero
reset session

set key out
set yrange[-0.9:10.9]
set ytics 1

plot for [i=0:10] i with lines lw i title sprintf("linewidth %g",i)

### end of code
结果:

### linewidth 0 isn't zero
reset session

set key out
set yrange[-0.9:10.9]
set ytics 1

plot for [i=0:10] i with lines lw i title sprintf("linewidth %g",i)

### end of code


顺便问一下,y轴上的人工制品是什么,例如ytics 3、4、6、7、9、10(wxt终端)?

我不确定官方对gnuplot的解释是什么,但根据我的经验,大多数图形包/工具/库等都使用一种特殊的约定,即线宽为零

根据这一约定,线宽为零并不意味着不可见;它的意思就是“尽可能细的线”。这意味着无论缩放、转换、逻辑到物理映射等如何,设备上都可以显示最细的线条

因此,在显示器上,它将是一条一像素宽的线

在打印机上,它将是打印机能够产生的最细的线条。因此,如果打印机有足够高的分辨率,那么这条线实际上可能是看不见的,尽管放大镜应该仍然能够显示它的存在


请注意,“不考虑缩放等”意味着,即使您设置了一些缩放,使10点线看起来像100像素那样厚,零宽度线仍将正好有一像素厚。

Mike Nakis正确地指出,对于至少一些gnuplot输出终端,包括PostScript,gnuplot要求一条0宽度的线,而相关语言或库将其解释为“1像素”或“最细的线”

类似地,“pointtype 0”并没有真正丢失,它生成一个单像素点

但是,可以使用线型“nodraw”完全禁用线条绘制。 这就产生了一对互补的命令

plot sin(x) with linespoints lt nodraw pt 7         # only the points are visible
plot sin(x) with linespoints lt 1 pt 0              # only the lines are visible

在某些情况下,了解
lt nodraw
的数值等价物是
lt-2

可能与线端盖有关。但它们看起来不一致,所以这真的很奇怪。@Mike Nakis,对,这是终端库的问题。在wxt终端上,您有3个线路端盖选项,
对接
方形
四舍五入
。对于前两个,您将得到奇怪的工件,
rounded
似乎很好。带有两个选项的windows终端
对接
四舍五入
都可以。qt终端没有选项,但似乎没有工件。感谢您的解释,这对我来说很有意义。谢谢!这正是我想要的。看起来像一个未记录的功能,我在5.2.8 PDF手册中找不到
nodraw
。顺便问一下,你能解释一下y轴上的工件吗?可能它们什么时候出现以及如何避免?好的,很高兴知道:对于
w lp lt nodraw
我得到默认点(交叉点),而对于
w lp lt-2
我什么也得不到,除了我明确指定点类型和线颜色,即
w lp lt-2 pt 1 lc 1
。每个线型都有一个指定的颜色、宽度、点类型、破折号图案,等等。当你说
绘图时。。。lt N
这会拉入相关属性,包括点类型。您可以通过指定显式点类型来替代此选项。与lt nodraw关联的pointtype和linecolor是无用的,因此是的,如果使用
linetype nodraw
但仍需要点和颜色,则必须将这些特性添加回plot命令。对于普通线型,您也可以使用
set linetype
命令更改关联的点类型等,但这不适用于特殊线型,如
nodraw