如何解决gnuplot中colorbox缺失色块的问题
how to fix the problem of the missing color pieces in the colorbox in gnuplot
我遇到一个问题,当我使用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")
ps 文件没有 gaps。如果将其导出为 png,您可能会得到一些伪像,但这是 ps 文件处理程序的问题,而不是文件本身的问题。你可以通过要求 Gnuplot 生成一个更简单的 eps 来避免这种行为,它不会在你最喜欢的 eps 编辑器上失败,或者你改变你处理 eps.[=16 的方式=]
将调色板更改为更简单的东西
您可以通过调色板的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 中没有):
保留原来的调色板,但改变处理 e 的方式ps
如果保留原始调色板,它会生成数百种颜色可能性,但大多数颜色会根据您在调色板中引入的阶梯式函数发生碰撞。
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。
这是对 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
此变通方法会绘制额外的线条以覆盖填充边界上的潜在瑕疵,其缺点是会使输出文件变大。
我遇到一个问题,当我使用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")
ps 文件没有 gaps。如果将其导出为 png,您可能会得到一些伪像,但这是 ps 文件处理程序的问题,而不是文件本身的问题。你可以通过要求 Gnuplot 生成一个更简单的 eps 来避免这种行为,它不会在你最喜欢的 eps 编辑器上失败,或者你改变你处理 eps.[=16 的方式=]
将调色板更改为更简单的东西
您可以通过调色板的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 中没有):
保留原来的调色板,但改变处理 e 的方式ps
如果保留原始调色板,它会生成数百种颜色可能性,但大多数颜色会根据您在调色板中引入的阶梯式函数发生碰撞。
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。
这是对 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
此变通方法会绘制额外的线条以覆盖填充边界上的潜在瑕疵,其缺点是会使输出文件变大。