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

问题描述 投票:0回答:1

是什么原因导致 lw 0 不具有零线宽,即不可见?

我在gnuplot手册中找到的。

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

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

问这个问题的原因是为了最终能够使用 with linespoints 并在循环中编程切换 with lineswith 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

结果:

enter image description here

顺便问一下,y轴上的伪影是什么,比如ytics 3,4,6,7,9,10(wxt-terminal)?

gnuplot width line linewidth
1个回答
3
投票

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 nodrawlt -2.


3
投票

我不知道官方对gnuplot有什么特别的解释,但根据我的经验,大多数图形包工具库等都对零线宽使用一个特殊的约定。

根据这个约定,线宽为零并不意味着看不见,它只是意味着 "最细的线"。 这意味着在设备上可以显示的最细的线,而不考虑缩放、变换、逻辑到物理映射等因素。

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

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

请注意,"无论缩放等 "意味着,即使你设置了一些缩放,使你的10点线看起来像100个像素那么粗,零宽度的线仍然是一个像素的厚度。

© www.soinside.com 2019 - 2024. All rights reserved.