带图像的半透明图
Semitransparent plot with image
我正在尝试绘制两个组合的矩阵,其中一个矩阵应该是半透明的。我需要它,因为实验数据有缺失值,我更愿意将插值数据与测量数据区分开来。网格点相同。 Gnuplot 版本为 5.2,补丁级别 8。
实验数据好像
8.8128 6.7424 nan
8.8128 6.9776 nan
8.8128 7.2128 nan
..
8.8128 10.976 122.2
..
8.8128 15.2096 nan
8.8128 15.4448 nan
并插值(无缺失值):
8.8128 6.7424 126.1199426176991
8.8128 6.9776 126.1199426176991
8.8128 7.2128 126.1199426176991
..
8.8128 10.7408 122.21158160029502
8.8128 10.976 122.21158160029502
8.8128 11.2112122.21158160029502
..
8.8128 15.2096 129.1679877531613
8.8128 15.4448 129.1679877531613
如果用pm3d
绘制实验数据,很多点都丢失了。 plot with image
产量
插值数据,同样的命令:
插值数据可以用 pm3d
+ set style fill transparent solid 0.5 noborder
绘制,但是在多图模式下图像的尺寸非常不合适。
这两个文件基本上都可以(预,post)以任何可能的方式处理,因为数据集是使用 Python.
生成的
是否可以合并这两个数据集,不透明和透明?
谢谢。
找到:
- 这个问题是关于绘图 .png
。
Assigning transparency to certain elements of a matrix in pm3d map - 这是最接近的,但没有颜色框,xscale 和 yscale 也丢失了。
你可以试试with boxxyerror
.
我使用以下 python 脚本生成一些数据:
import random
import math
N = 100
with open("i.dat", 'w') as interpolationfile, open("m.dat", 'w') as measurementfile:
for x in range(N):
interpolationfile.write('\n')
for y in range(N):
value = 0.5 + 0.5*math.sin(2*math.pi*x*y/(N*N))
datastring = f"{x+0.5} {y+0.5} {value}\n"
interpolationfile.write(datastring)
if random.randint(0, 100) > 90:
measurementfile.write(datastring)
gnuplot 脚本:
reset
set terminal pngcairo # directly plot to file, my qt-terminal shows strange artifacts
set output "output.png"
set nokey
set cbrange [0:1]
plot "i.dat" u 1:2:(0.5):(0.5):3 with boxxyerror fillcolor palette fillstyle transparent solid 0.2 noborder ,\
"m.dat" u 1:2:(0.5):(0.5):3 with boxxyerror fillcolor palette fillstyle solid
using 1:2:(0.5):(0.5):3
中的参数为using <x-column>:<y-column>:<box-width x>:<box-width y>:<color in palette>
。我的示例数据具有整数 x
和 y
坐标,因此我的框宽度和高度为 1(或每个方向为 0.5)。括号中的 (0.5)
使用这些固定的框大小。
详情请参阅help boxxyerror
,也可以在输入文件的单独列中为框定义绝对角坐标。
如果没有用于插值数据的 noborder
,框周围会有不透明的边框。
这是结果:
我正在尝试绘制两个组合的矩阵,其中一个矩阵应该是半透明的。我需要它,因为实验数据有缺失值,我更愿意将插值数据与测量数据区分开来。网格点相同。 Gnuplot 版本为 5.2,补丁级别 8。
实验数据好像
8.8128 6.7424 nan
8.8128 6.9776 nan
8.8128 7.2128 nan
..
8.8128 10.976 122.2
..
8.8128 15.2096 nan
8.8128 15.4448 nan
并插值(无缺失值):
8.8128 6.7424 126.1199426176991
8.8128 6.9776 126.1199426176991
8.8128 7.2128 126.1199426176991
..
8.8128 10.7408 122.21158160029502
8.8128 10.976 122.21158160029502
8.8128 11.2112122.21158160029502
..
8.8128 15.2096 129.1679877531613
8.8128 15.4448 129.1679877531613
如果用pm3d
绘制实验数据,很多点都丢失了。 plot with image
产量
插值数据,同样的命令:
插值数据可以用 pm3d
+ set style fill transparent solid 0.5 noborder
绘制,但是在多图模式下图像的尺寸非常不合适。
这两个文件基本上都可以(预,post)以任何可能的方式处理,因为数据集是使用 Python.
生成的是否可以合并这两个数据集,不透明和透明? 谢谢。
找到:
.png
。
Assigning transparency to certain elements of a matrix in pm3d map - 这是最接近的,但没有颜色框,xscale 和 yscale 也丢失了。
你可以试试with boxxyerror
.
我使用以下 python 脚本生成一些数据:
import random
import math
N = 100
with open("i.dat", 'w') as interpolationfile, open("m.dat", 'w') as measurementfile:
for x in range(N):
interpolationfile.write('\n')
for y in range(N):
value = 0.5 + 0.5*math.sin(2*math.pi*x*y/(N*N))
datastring = f"{x+0.5} {y+0.5} {value}\n"
interpolationfile.write(datastring)
if random.randint(0, 100) > 90:
measurementfile.write(datastring)
gnuplot 脚本:
reset
set terminal pngcairo # directly plot to file, my qt-terminal shows strange artifacts
set output "output.png"
set nokey
set cbrange [0:1]
plot "i.dat" u 1:2:(0.5):(0.5):3 with boxxyerror fillcolor palette fillstyle transparent solid 0.2 noborder ,\
"m.dat" u 1:2:(0.5):(0.5):3 with boxxyerror fillcolor palette fillstyle solid
using 1:2:(0.5):(0.5):3
中的参数为using <x-column>:<y-column>:<box-width x>:<box-width y>:<color in palette>
。我的示例数据具有整数 x
和 y
坐标,因此我的框宽度和高度为 1(或每个方向为 0.5)。括号中的 (0.5)
使用这些固定的框大小。
详情请参阅help boxxyerror
,也可以在输入文件的单独列中为框定义绝对角坐标。
如果没有用于插值数据的 noborder
,框周围会有不透明的边框。
这是结果: