Gnuplot pm3d-将gamma设置为第四维

Gnuplot pm3d-将gamma设置为第四维,gnuplot,Gnuplot,我在gnuplot中使用pm3d设置来可视化模拟中的波函数密度。此外,最近我将第二个数据可视化,即波函数的相位(更精确地说是cos^2)。一切都在二维图上,并且依赖于x空间坐标和时间。以下是一个例子: 我的问题是,我能把两个数据变量都放到一个图中吗?我在考虑根据密度调整伽马水平。我能用几个命令就可以得到它吗?用图像绘制的好处是,三维会自动映射到彩色调色板。然而,调色板只是一维的,无法使其成为二维的 解决方案1 使用打印样式rgbimage: plot "data" using x:y:r:g:

我在gnuplot中使用pm3d设置来可视化模拟中的波函数密度。此外,最近我将第二个数据可视化,即波函数的相位(更精确地说是cos^2)。一切都在二维图上,并且依赖于x空间坐标和时间。以下是一个例子:


我的问题是,我能把两个数据变量都放到一个图中吗?我在考虑根据密度调整伽马水平。我能用几个命令就可以得到它吗?

用图像绘制
的好处是,三维会自动映射到彩色调色板。然而,调色板只是一维的,无法使其成为二维的

解决方案1 使用打印样式
rgbimage

plot "data" using x:y:r:g:b with rgbimage
需要三列来定义每个数据点的红色、绿色和蓝色组件,因此您可以获得三个维度来为绘图着色。 每个组件都必须在[0:255]范围内,所以必须注意缩放

由您提供r、g、b值

可能的颜色映射: 如果要显示复数,可以查看HSV(色调饱和度值)颜色空间:

(图片)

色调是此图中的角度(非常适合极性分量),饱和度决定了从白色到完全饱和颜色(非常适合振幅)的径向颜色等级。该值始终为1

但我不得不说,将HSV转换为RGB(即,将复数转换为RGB)的公式并不容易,但你可以在网上找到它们。可能是这样,您还可以找到另一个将复数值映射到RGB的简单而漂亮的映射

解决方案2 另一个想法是:使用multiplot覆盖两个图。第一种是通常的带有图像的
,第二种是带有rgbalpha的
。此类型类似于上文所述的rgbimage的
,但还有一列指定颜色的透明度(同样,范围为[0:255])

在这里,我用纯白色图层和水平透明度图案覆盖第一个图(垂直图案):

# for using the '++' below
set isosamples 1000
set yrange[-4:4]
set xrange[-4:4] 

# The box would need manual adjustment. I left it out there
unset colorbox


set multiplot
plot '++' u 1:2:(sin($1)) w image 
plot '++' u 1:2:(255):(255):(255):(127+127*sin($2)) w rgbalpha
unset multiplot

使用图像绘制
的好处在于,第三个维度会自动映射到彩色调色板。然而,调色板只是一维的,无法使其成为二维的

解决方案1 使用打印样式
rgbimage

plot "data" using x:y:r:g:b with rgbimage
需要三列来定义每个数据点的红色、绿色和蓝色组件,因此您可以获得三个维度来为绘图着色。 每个组件都必须在[0:255]范围内,所以必须注意缩放

由您提供r、g、b值

可能的颜色映射: 如果要显示复数,可以查看HSV(色调饱和度值)颜色空间:

(图片)

色调是此图中的角度(非常适合极性分量),饱和度决定了从白色到完全饱和颜色(非常适合振幅)的径向颜色等级。该值始终为1

但我不得不说,将HSV转换为RGB(即,将复数转换为RGB)的公式并不容易,但你可以在网上找到它们。可能是这样,您还可以找到另一个将复数值映射到RGB的简单而漂亮的映射

解决方案2 另一个想法是:使用multiplot覆盖两个图。第一种是通常的带有图像的
,第二种是带有rgbalpha的
。此类型类似于上文所述的rgbimage的
,但还有一列指定颜色的透明度(同样,范围为[0:255])

在这里,我用纯白色图层和水平透明度图案覆盖第一个图(垂直图案):

# for using the '++' below
set isosamples 1000
set yrange[-4:4]
set xrange[-4:4] 

# The box would need manual adjustment. I left it out there
unset colorbox


set multiplot
plot '++' u 1:2:(sin($1)) w image 
plot '++' u 1:2:(255):(255):(255):(127+127*sin($2)) w rgbalpha
unset multiplot

使用图像绘制
的好处在于,第三个维度会自动映射到彩色调色板。然而,调色板只是一维的,无法使其成为二维的

解决方案1 使用打印样式
rgbimage

plot "data" using x:y:r:g:b with rgbimage
需要三列来定义每个数据点的红色、绿色和蓝色组件,因此您可以获得三个维度来为绘图着色。 每个组件都必须在[0:255]范围内,所以必须注意缩放

由您提供r、g、b值

可能的颜色映射: 如果要显示复数,可以查看HSV(色调饱和度值)颜色空间:

(图片)

色调是此图中的角度(非常适合极性分量),饱和度决定了从白色到完全饱和颜色(非常适合振幅)的径向颜色等级。该值始终为1

但我不得不说,将HSV转换为RGB(即,将复数转换为RGB)的公式并不容易,但你可以在网上找到它们。可能是这样,您还可以找到另一个将复数值映射到RGB的简单而漂亮的映射

解决方案2 另一个想法是:使用multiplot覆盖两个图。第一种是通常的带有图像的
,第二种是带有rgbalpha的
。此类型类似于上文所述的rgbimage的
,但还有一列指定颜色的透明度(同样,范围为[0:255])

在这里,我用纯白色图层和水平透明度图案覆盖第一个图(垂直图案):

# for using the '++' below
set isosamples 1000
set yrange[-4:4]
set xrange[-4:4] 

# The box would need manual adjustment. I left it out there
unset colorbox


set multiplot
plot '++' u 1:2:(sin($1)) w image 
plot '++' u 1:2:(255):(255):(255):(127+127*sin($2)) w rgbalpha
unset multiplot

使用图像绘制
的好处在于,第三个维度会自动映射到彩色调色板。然而,调色板只是一维的,无法使其成为二维的

解决方案1 使用打印样式
rgbimage

plot "data" using x:y:r:g:b with rgbimage
需要三列来定义每个数据点的红色、绿色和蓝色组件,因此您可以获得三个维度来为绘图着色。 每个组件都必须在[0:255]范围内,所以必须注意缩放

由您提供r、g、b值

可能的颜色映射: 当您想显示复数时,您可以查看HSV(色调)