gpt4 book ai didi

python - Matplotlib 复数热图 : Modulus and phase as hue and value?

转载 作者:太空宇宙 更新时间:2023-11-03 20:46:19 25 4
gpt4 key购买 nike

我想绘制一个相敏光谱图,如本出版物中所做的那样(图 3 右栏,图 4 顶部面板):https://doi.org/10.1016/j.jmr.2014.10.004

对于那些无法访问该出版物的人:这是一个时频数据集的热图,通过使用 HSV 颜色空间中的值来对数据进行颜色编码,以表示特定时间特定频率的幅度和色调表示该频率分量的相位。

此类数据集中的每个点都是一个复数。

我可以做的是将数据转换为符合我规范的 RGB(A) 数组,然后使用 imshow 进行绘制。

但这似乎有点迂回(更像是我正在寻找的函数会在后台执行此操作)。是否有一个我太盲目而无法找到的内置函数可以满足我的要求?

最佳答案

所以我改编了Matplotlib documentation中的解决方案解决我的问题,并希望在这里分享给遇到同样问题的人。

这个想法是绘制颜色编码相位图与黑色 alpha 编码模量图的叠加。

这是我的代码(缺少轴标签等,但应该很容易添加):

import numpy as np
import matplotlib.pyplot as plt


def huevalueplot(cmplxarray):
# Creating the black cover layer

black = np.full((*cmplxarray.shape, 4), 0.)
black[:,:,-1] = np.abs(cmplxarray) / np.abs(cmplxarray).max()
black[:,:,-1] = 1 - black[:,:,-1]

# Actual plot

fig, ax = plt.subplots()
# Plotting phases using 'hsv' colormap (the 'hue' part)
ax.imshow(np.angle(cmplxarray), cmap='hsv')
# Plotting the modulus array as the 'value' part
ax.imshow(black)
ax.set_axis_off()


# Create complex sample data

minval = -2
maxval = 2
step = 0.01

datareal = np.arange(minval, maxval+step, step)
dataimag = datareal * 1j

cmplxarray = np.zeros((datareal.size, datareal.size), dtype=complex)

for i in range(datareal.size):
for k in range(datareal.size):
cmplxarray[i,k] = datareal[i] + dataimag[k]

# Plot
huevalueplot(cmplxarray)

希望它对将来的人有所帮助。

关于python - Matplotlib 复数热图 : Modulus and phase as hue and value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56577154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com