在matplotlib中为colorbar添加标记或线条

webghufk  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(94)

我有以下几行代码来生成热图(pcolormesh)。

import matplotlib.pyplot as plt
import numpy as np

vals = np.linspace(-np.pi/2, np.pi/2, 101)
x, y = np.meshgrid(vals, vals)

z = np.abs(np.sinc(x) * np.sinc(y))

xDeg = np.rad2deg(x)
yDeg = np.rad2deg(y)

plt.pcolormesh(xDeg, yDeg, z, cmap='jet', vmin=0, vmax=1)
plt.colorbar()

plt.axis([-90, 90, -90, 90])
ticks = np.linspace(-90, 90, 13)
plt.xticks(ticks)
plt.yticks(ticks)

print(np.mean(z))                # 0.186225110029
print(np.sqrt(np.mean(z**2)))    # 0.295710882276
plt.show()

字符串
它产生了这个图像:

我想放置:
1.颜色条上的标记位于平均值(0.186)处。
1.颜色条上RMS值(0.295)处的水平线。
有什么建议吗?

dfty9e19

dfty9e191#

这比预期的要容易。我没有意识到colorbar在plt.colorbar().ax中有一个坐标轴

cb = plt.colorbar()
    cb.ax.plot(0.5, mean, 'w.')
    cb.ax.plot([0, 1], [rms]*2, 'w')

字符串
或者,正如@ Orders指出的那样,

cb = plt.colorbar()
    cb.ax.plot(0.5, mean, 'w.')
    cb.ax.axhline(rms, c='w')


看起来x轴是(0,1),y轴是(dataMin,dataMax)(0,1)。
根据@S.A.评论,x/y轴在(min(data), max(data))之间。然而,本示例显示x轴为(0, 1),其中x轴数据为(-pi/2, pi/2)。Y轴确认为(min(data), max(data))
x1c 0d1x的数据

相关问题