【问题标题】:how to fix the problem of the missing color pieces in the colorbox in gnuplot如何解决gnuplot中colorbox中缺少色块的问题
【发布时间】:2021-12-29 03:59:18
【问题描述】:

我遇到一个问题,当我使用 gnuplot 绘制地图时,地图附近会出现一个看起来很奇怪的颜色框。我把彩盒炸了,发现有缺色的碎片,下图。如何填充颜色框的颜色?

这是我在 gnuplot 中使用的终端类型和调色板。

set terminal postscript portrait color enhanced 12
set palette defined (-6.0 "#1B66B1",\
                     -4.8 "#1B66B1",\
                     -4.8 "#2A85DF",\
                     -3.6 "#2A85DF",\
                     -3.6 "#5FA3E7",\
                     -2.4 "#5FA3E7",\
                     -2.4 "#95C2EF",\
                     -1.2 "#95C2EF",\
                     -1.2 "#C9E0F7",\
                     -0.120000 "#C9E0F7",\
                     0.0 "#FFFFFF",\
                     0.0 "#FFFFFF",\
                     0.120000 "#F6D5CB",\
                     1.2 "#F6D5CB",\
                     1.2 "#EDAB96",\
                     2.4 "#EDAB96",\
                     2.4 "#E48062",\
                     3.6 "#E48062",\
                     3.6 "#DC562E",\
                     4.8 "#DC562E",\
                     4.8  "#AE3F1E",\
                     6.0  "#AE3F1E")

【问题讨论】:

  • 请提供更多信息。什么gnuplot终端类型?我认为这是来自屏幕截图?对我来说,颜色框矩形看起来是部分透明的。这是因为您使用了set style fill transparent solid 0.5 之类的东西吗?地图中的彩色区域是否显示出同样的效果?还请显示定义正在使用的调色板的set palette 命令。
  • @Ethan 你好,效果只显示在colorbox中

标签: gnuplot


【解决方案1】:

ps 文件没有间隙。如果将其导出为 png,您可能会得到一些工件,但这是 ps 文件处理程序的问题,而不是文件本身的问题。你可以通过让 Gnuplot 生成一个不会在你最喜欢的 eps 编辑器上失败的更简单的 eps 来避免这种行为,或者你可以改变你处理 eps 的方式。

将调色板更改为更简单的东西

您可以通过调色板的maxcolors 选项定义不同颜色的最大数量。这会生成不超过maxcolors 数量的可能颜色,但它是等距的。

set terminal postscript portrait color enhanced 12
set o "discrete.eps"
set palette defined (-6.0 "#1B66B1",\
                     -4.8 "#2A85DF",\
                     -3.6 "#5FA3E7",\
                     -2.4 "#95C2EF",\
                     -1.2 "#C9E0F7",\
                     0.0 "#FFFFFF",\
                     1.2 "#F6D5CB",\
                     2.4 "#EDAB96",\
                     3.6 "#E48062",\
                     4.8 "#DC562E",\
                     6.0 "#AE3F1E") maxcolors 11
set samples 20
set isosamples 20
splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2) w pm3d

在检查颜色条时,您会注意到在我使用 Inkscape 创建 png 后,在 png 上呈现的小间隙(但不是在 eps 中):

保留原始调色板,但改变处理 eps 的方式

如果你保留原来的调色板,它会产生数百种颜色的可能性,但大多数会根据你在调色板中引入的阶梯式功能进行碰撞。

set terminal postscript portrait color enhanced 12
set o "discrete.eps"
set palette defined (-6.0 "#1B66B1",\
                     -4.8 "#1B66B1",\
                     -4.8 "#2A85DF",\
                     -3.6 "#2A85DF",\
                     -3.6 "#5FA3E7",\
                     -2.4 "#5FA3E7",\
                     -2.4 "#95C2EF",\
                     -1.2 "#95C2EF",\
                     -1.2 "#C9E0F7",\
                     -0.12 "#C9E0F7",\
                     -0.12 "#FFFFFF",\
                     0.12 "#FFFFFF",\
                     0.12 "#F6D5CB",\
                     1.2 "#F6D5CB",\
                     1.2 "#EDAB96",\
                     2.4 "#EDAB96",\
                     2.4 "#E48062",\
                     3.6 "#E48062",\
                     3.6 "#DC562E",\
                     4.8 "#DC562E",\
                     4.8 "#AE3F1E",\
                     6.0 "#AE3F1E")
set samples 20
set isosamples 20
splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2) w pm3d
set o
set term wxt

使用不同的编辑器打开 eps 以查看其外观。使用 gimp,你会得到如下图所示的东西。

如果你先使用 Inkscape,它可以原生处理 eps,它可以产生工件。

您可以使用 ghostscript 的 ps2pdf 将 eps 转换为 pdf。

【讨论】:

    【解决方案2】:

    这更像是对 DanielTuzes 答案的评论,而不是单独的回复。

    在两个实心填充矩形之间的边界处可能出现透明、可能颜色不正确的伪影问题是 PostScript/PDF 渲染程序和查看器反复出现的问题。

    这并不是 gnuplot 的错(*.eps 可以正确渲染,只是许多渲染实用程序有问题)。但是,gnuplot 中有一种方法可以抑制这些伪影。在开发版和即将发布的 gnuplot 5.4.3 版中,它使用新关键字进行选择:

    #gnuplot 5.4.3
    set pm3d border retrace
    

    在此之前存在相同的选项,但没有记录并且没有单独的关键字:

    #gnuplot versions prior to 5.4.3
    set pm3d border lt -6
    

    此解决方法会绘制额外的线条以覆盖填充边界上的潜在伪影,其缺点是会使输出文件变大。

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2021-06-20
      • 2011-10-01
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多