Python 3.x 基于数据数组为直方图创建颜色贴图
我已经在很多地方寻找了如何做到这一点,但还没有找到我需要的东西/找到验证(如果可能的话) 我有一个y轴高度的2d直方图(由rdata1给出)和x轴强度的2d直方图(由强度给出)。柱状图绘制得很好,但我想缩放颜色条,而不是使其正常化 我已经定义了一个彩色地图,我只是想用我绘制的数据来缩放它 我希望缩放数据,以便colorbar(当前从0-1运行)从0缩放到(bin中的点数)/(len(time))。这是为了我能找出某个点在某个高度的某个强度箱中的概率。我不确定是制作第二个柱状图(我不会绘制)并从中导出最大/最小值以缩放色条,还是使用许多for循环和列表将值附加到每个高度范围的存储箱中,然后最大/最小这些存储箱中的值 代码如下:Python 3.x 基于数据数组为直方图创建颜色贴图,python-3.x,matplotlib,histogram,colorbar,Python 3.x,Matplotlib,Histogram,Colorbar,我已经在很多地方寻找了如何做到这一点,但还没有找到我需要的东西/找到验证(如果可能的话) 我有一个y轴高度的2d直方图(由rdata1给出)和x轴强度的2d直方图(由强度给出)。柱状图绘制得很好,但我想缩放颜色条,而不是使其正常化 我已经定义了一个彩色地图,我只是想用我绘制的数据来缩放它 我希望缩放数据,以便colorbar(当前从0-1运行)从0缩放到(bin中的点数)/(len(time))。这是为了我能找出某个点在某个高度的某个强度箱中的概率。我不确定是制作第二个柱状图(我不会绘制)并从中
import numpy as np
import file_reader as fr
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
import matplotlib as mpl
time = [0.01649999991059303, 0.02584999985992908]
rdata = [-600.020751953125, -570.04150390625, -540.062255859375, -510.0830078125, -480.1037902832031, -450.1245422363281, -420.1452941894531, -390.1660461425781, -360.1867980957031, -330.2075500488281]
intensity = [[-37.32464981079102, -38.3233528137207], [-37.70231628417969, -38.05134201049805], [-38.27889251708984, -38.82979583740234], [-28.01022720336914, -27.68825912475586], [-8.408446311950684, -8.440451622009277], [-8.749446868896484, -8.750232696533203], [-9.431790351867676, -9.41820240020752], [-10.09048461914062, -10.23848724365234], [-10.84317588806152, -10.84869194030762], [-11.61933135986328, -11.67543029785156]]
range_bins = np.linspace(rdata[0],rdata[-1],(len(rdata)+1))
intensity_bins = np.linspace(-70,30,100)
intensity = np.array(intensity).ravel()
rdata1 = np.repeat(rdata,len(time))
cdict = {'red': ((0.0, 1.0, 1.0),
(0.25, 0.0, 0.0),
(0.55, 0.35, 0.35),
(0.75, 0.75, 0.75),
(1.0, 1.0, 1.0)),
'green': ((0.0, 1.0, 1.0),
(0.25, 0.1, 0.1),
(0.55, 0.6, 0.6),
(0.75, 0.8, 0.8),
(1.0, 0.0, 0.0)),
'blue': ((0.0, 1.0, 1.0),
(0.25, 1.0, 1.0),
(0.55, 0.2, 0.2),
(0.75, 0.1, 0.1),
(1.0, 0.0, 0.0))
}
radar_map = LinearSegmentedColormap('radar_map', cdict)
H, range_bins, intensity_bins = np.histogram2d(rdata1,intensity,bins=(range_bins,intensity_bins))
fig = plt.figure()
X,Y = np.meshgrid(intensity_bins,range_bins)
plt.pcolormesh(X,Y,H, cmap=radar_map)
cax = fig.add_axes([0.95, 0.2, 0.02, 0.6])
cb = mpl.colorbar.ColorbarBase(cax, cmap=radar_map, spacing='proportional')
对此,我们将不胜感激。抱歉,这篇文章太长了。目前,颜色栏独立于显示的pcolormesh。 如果将颜色栏链接到pcolormesh,它将自动缩放到绘图的最小和最大级别。使用
plt.colorbar(pc)
,其中pc
是pcolormesh的返回值
要规范化直方图计数,您可以将直方图除以所需的任何数量,例如:
plt.pcolormesh( X,Y,H/float(len(time)) )
例如:
fig = plt.figure()
X,Y = np.meshgrid(intensity_bins,range_bins)
pc = plt.pcolormesh(X,Y,H/float(len(time)), cmap=radar_map)
cax = fig.add_axes([0.90, 0.2, 0.02, 0.6])
cb = plt.colorbar(pc, cax=cax)
您是否愿意提供一个问题的解决方案(这样就不需要对需要在代码中放置样本数据的位置进行反向工程)。我编辑了我的帖子,希望能进一步澄清我的问题