是什么原因导致 lw 0
不具有零线宽,即不可见?
我在gnuplot手册中找到的。
线宽和点大小是当前终端默认宽度的倍数... ...
好吧,如果 lw 0
是一个乘数,那么产生的线宽应该是零,与终端的默认线宽无关。
问这个问题的原因是为了最终能够使用 with linespoints
并在循环中编程切换 with lines
和 with 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
结果:
顺便问一下,y轴上的伪影是什么,比如ytics 3,4,6,7,9,10(wxt-terminal)?
Mike Nakis说的没错,至少对于一些gnuplot输出终端,包括PostScript,gnuplot要求0宽度的线,而相关的语言或库将其解释为 "1像素 "或 "最细线"。
同样 "点型0 "也不是真正的缺失,它产生的是一个单像素的点。
然而,你可以通过使用linetype "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
.
我不知道官方对gnuplot有什么特别的解释,但根据我的经验,大多数图形包工具库等都对零线宽使用一个特殊的约定。
根据这个约定,线宽为零并不意味着看不见,它只是意味着 "最细的线"。 这意味着在设备上可以显示的最细的线,而不考虑缩放、变换、逻辑到物理映射等因素。
因此,在显示器上,它将是一条只有一个像素宽的线。
在打印机上,它将是打印机能够产生的最细的线条。 所以,如果打印机有足够高的分辨率,那么这条线可能实际上是看不见的,尽管放大镜应该仍然能够显示它的存在。
请注意,"无论缩放等 "意味着,即使你设置了一些缩放,使你的10点线看起来像100个像素那么粗,零宽度的线仍然是一个像素的厚度。