在matplotlib中创建热图图
我有一个二维numpy数组,它是一组值对于某些参数。此数组中的部分数据丢失,其类型为numpy.nan。 我想用热图、pcolor或matshow或imshow绘制一个“热图”类型的图表,在这种情况下,这对我来说并不重要。颜色将指示参数的值。 但我面临一些困难,使这项任务成为一项耗时的工作。数组中部分数据的传递是由于显示热图的数据字段不是矩形。它被刻在一个近似圆形的图形上。我给NaN赋值数据矩阵中不属于圆的点。在该矩阵中,nan值具有传统上不是圆的点。只有一些列和行完全被数据填充。这种方法帮助我解决了如何显示任意形状的热图而不仅仅是矩形的问题 在这方面,我有两个问题:在matplotlib中创建热图图,matplotlib,jupyter-notebook,Matplotlib,Jupyter Notebook,我有一个二维numpy数组,它是一组值对于某些参数。此数组中的部分数据丢失,其类型为numpy.nan。 我想用热图、pcolor或matshow或imshow绘制一个“热图”类型的图表,在这种情况下,这对我来说并不重要。颜色将指示参数的值。 但我面临一些困难,使这项任务成为一项耗时的工作。数组中部分数据的传递是由于显示热图的数据字段不是矩形。它被刻在一个近似圆形的图形上。我给NaN赋值数据矩阵中不属于圆的点。在该矩阵中,nan值具有传统上不是圆的点。只有一些列和行完全被数据填充。这种方
将numpy导入为np
作为pd进口熊猫
将matplotlib导入为mpl
将matplotlib.pyplot作为plt导入
导入日期时间
%matplotlib内联
#正在检索和转换数据。。。
#创建二维数据数组
#创建矩阵数据向量-一些自定义函数
数据=创建矩阵数据向量(参数数据=数据.z参数\
位置数据=位置数据正常\
数据形状=数据形状(数组形状)
数据形状
(12,12)-大小可以大得多
数据数组如下所示:
数组([[nan,nan,nan,201,195,203,196,nan,
楠,楠,楠],,
[nan,nan,nan,193,172,181,212,91.3179.],
楠,楠,楠],,
[nan,nan,188,208,180,201,239,243,254,,
253,楠,楠],
[nan,232,234,224,266,263,258,218,215.],
200,192,nan],
[nan,211,201,194,190,199,196,187,200.],
199,192,nan],
[nan,200,202,207,201,195,203,196,193,,
172,181,nan],
[nan,212,91.3179,188,208,180,201,239.],
243,254,nan],
[nan,253,232,234,224,266,263,258,218.],
215,200,nan],
[nan,192,211,201,194,190,199,196,187,,
200,199,nan],
[nan,nan,192,200,202,207,201,195,203,,
196,楠,楠],
[nan,nan,nan,193,172,181,212,91.3179.],
楠,楠,楠],,
[nan,nan,nan,nan,188,nan,nan,208,nan,
楠,楠,楠]]
此代码用于绘制图形:
bounds=np.linspace(param_ng,param_vg,continious_color_map.N)\
.重塑(连续的颜色映射N)
norm=mpl.colors.BoundaryNorm(边界,连续的颜色映射)
图,ax=plt.子批次(1,1,figsize=(7,7))
img=ax.matshow(数据,cmap=continious\u color\u map,norm=norm)
分隔器=使轴可定位(ax)
cax=分隔器。附加_轴(“右”,大小为5%,填充为1%)
图颜色条(img,cax=cax,ax=ax,ticks=bounds)
如果您能提供任何帮助,我将不胜感激。您可以通过
设置nan
值的颜色。将\u bad()
设置到颜色映射
要从未固定的x、y、z位置创建图像,可以使用contourf()
:
导入matplotlib.pyplot作为plt
将matplotlib导入为mpl
将numpy作为np导入
来自numpy INPORT nan
数据=np.数组([[nan,nan,nan,nan,201,195,203,196,nan,nan,nan,nan],
[nan,nan,nan,193,172,181,212,91.3179,nan,nan,nan],
[nan,nan,188,208,180,201,239,243,254,253,nan,nan],
[nan,232,234,224,266,263,258,218,215,200,192,nan],
[nan,211,201,194,190,199,196,187,200,199,192,nan],
[nan,200,202,207,201,195,203,196,193,172,181,nan],
[nan,212,91.3179,188,208,180,201,239,243,254,nan],
[nan,253,232,234,224,266,263,258,218,215,200,nan],
[nan,192,211,201,194,190,199,196,187,200,199,nan],
[nan,nan,192,200,202,207,201,195,203,196,nan,nan],
[nan,nan,nan,193,172,181,212,91.3179,nan,nan,nan],
[nan,nan,nan,nan,188,nan,nan,208,nan,nan,nan,nan]]
连续颜色映射=plt.get\u cmap('spectrum',20)
连续的颜色映射。设置为坏(“紫色”)
bounds=np.linspace(np.nanmin(数据),np.nanmax(数据),continious\u color\u map.N)
norm=mpl.colors.BoundaryNorm(边界,连续的颜色映射)
图(ax1,ax2)=plt.子批次(ncols=2,figsize=(14,6))
img1=ax1.matshow(数据,cmap=continious\u color\u map,norm=norm)
plt.色条(img1,ax=ax1,收缩=0.9)
xs=[i表示枚举(行)中i的数据行,x表示非np.isnan(x)