【问题标题】:Adding markers or lines to colorbar in matplotlib在 matplotlib 中向颜色条添加标记或线条
【发布时间】:2017-07-15 17:22:24
【问题描述】:

我有以下代码行来生成热图 (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)。
  2. 颜色条上 RMS 值 (0.295) 处的水平线。

有什么意见吗?

【问题讨论】:

    标签: python python-2.7 matplotlib


    【解决方案1】:

    这比预期的要容易。我没有意识到颜色条在plt.colorbar().ax中有一个可绘制的轴

    cb = plt.colorbar()
    cb.ax.plot(0.5, mean, 'w.') # my data is between 0 and 1
    cb.ax.plot([0, 1], [rms]*2, 'w') # my data is between 0 and 1
    # Note: would need to scale mean/rms to be between 0 and 1
    

    看起来 x 轴是 (0, 1) 而 y 轴 (dataMin, dataMax) (0, 1)。

    【讨论】:

    • colorbar 坐标区对象的 x 轴和 y 轴都是数据方面的。只有在您的示例中,这是偶然的(0, 1)。在所有情况下,x 轴和 y 轴都将具有限制 (min(data), max(data))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2015-06-22
    • 2017-06-18
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多