【问题标题】:gnuplot: why is linewidth 0 not zero in width?gnuplot:为什么线宽 0 的宽度不为零?
【发布时间】:2020-05-09 05:00:14
【问题描述】:

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

结果:

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

【问题讨论】:

  • 伪影可能与行尾端有关。但它们看起来并不一致,所以这真的很奇怪。
  • @Mike Nakis,对,这是终端库的东西。在 wxt-terminal 上,您有 3 个用于行尾端的选项,buttsquarerounded。使用前两个你会得到奇怪的工件,rounded 似乎很好。 windows-terminal 有 2 个选项 buttrounded 都很好。 qt-terminal 没有选项,但似乎没有工件。

标签: gnuplot width line linewidth


【解决方案1】:

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 可能会有所帮助。

【讨论】:

  • 谢谢!这正是我一直在寻找的。看起来像一个未记录的功能,我在 5.2.8 PDF 手册中找不到nodraw
  • 对了,能不能也解释一下y轴的伪影?也许它们何时出现以及如何避免?
  • 好的,很高兴知道:对于w lp lt nodraw,我得到默认点(十字),而对于w lp lt -2,我什么也没得到,除了我明确指定点类型线条颜色,即w lp lt -2 pt 1 lc 1
  • 每种线型都有指定的颜色、宽度、点型、虚线图案等。当您说plot ... lt N 时,这会引入包括点类型在内的相关属性。您可以通过给出明确的点类型来覆盖它。与 lt nodraw 关联的 pointtype 和 linecolor 是没用的,所以是的,如果您使用 linetype nodraw 但仍然想要点和颜色,那么您必须将这些属性添加回 plot 命令。对于普通线型,您还可以使用set linetype 命令更改关联的点类型等,但这不适用于nodraw 等特殊线型。
【解决方案2】:

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

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

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

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

并注意“无论缩放等”。这意味着即使您设置了一些缩放比例,使您的 10 点线看起来像 100 像素一样粗,但零宽度线仍将恰好是 1 像素粗。

【讨论】:

  • 感谢您的解释,这对我来说很有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 2017-02-14
  • 1970-01-01
相关资源
最近更新 更多