首页 > 解决方案 > gnuplot 矩阵增加了像素大小

问题描述

我无法在 gnuplot 中可视化大型矩阵,这似乎是由于像素大小。作为一个最小的工作示例,我尝试使用以下命令绘制一个 5000 x 5000 单位矩阵:

set term pngcairo enh col
set out "plot.png"    
unset key
set datafile commentschars "%#"
set xrange [0:5000]
set yrange [5000:0] reverse
plot 'A' matrix w image

数据在这里。结果图如下所示: 在此处输入图像描述

您可以看到一些对角线元素,但它看起来很糟糕,并且大部分对角线都丢失了。当我转到 10000 x 10000 时,对角线都看不到。似乎像素大小不够大。相比之下,以下 matlab 代码生成了一个漂亮的图形:

A = eye(5000,5000);
imagesc(A);

该图如下所示:

在此处输入图像描述

在这里,我们可以在图像中看到一条漂亮的对角线。如何让 gnuplot 产生类似的图形

标签: matrixgnuplotpixel

解决方案


选项 1:使您的绘图分辨率足够大,以至于它实际上可以代表每边 5000 像素。如果生成的图像文件对于您的目的来说太大,您可以使用 ImageMagick 等外部工具将其缩小。一个可能的问题是对角线太细了,当你缩小图形时它会变得不可见。

 set size square
 unset key
 set datafile commentschars "%#"
 set xrange [0:5000]
 set yrange [5000:0] reverse

 set term pngcairo size 6000,6000 fontscale 10.
 set output 'bigplot.png'
 plot 'A' matrix w image
 unset output

选项 2:对矩阵进行下采样,使其适合较小的绘图分辨率。例如

 set size square
 unset key
 set datafile commentschars "%#"
 set xrange [0:5000]
 set yrange [5000:0] reverse

 set term pngcairo size 600,600
 set output 'smallplot.png'
 plot 'A' matrix every 10:10 with image

下面显示的是选项 2 的输出 在此处输入图像描述


推荐阅读