matrix - 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 产生类似的图形?
解决方案
选项 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
推荐阅读
- php - 如何将 wp-editor textarea 数据保存到包含 html 标签的 php 文件中?
- python - 沿 y=x 有效翻转/转置图像
- javascript - Internet Explorer 中不支持 Object.values
- powershell - $PSScriptRoot NULL 值 - 递归删除
- android - 如何使用 EditText 在 WebView 中搜索网站的搜索栏?
- php - 解压后如何删除laravel删除文件?
- function - 尝试在循环内创建“动态”函数
- django - 使用 Django Rest Framework + VueJs 作为前端时的 Django 权限
- java - 从 application.yml 获取 mybatis 的 SQL 会话
- javascript - 绘制和修改矢量特征 (OpenLayers)