在pcolormesh上覆盖轮廓颜色条

时间:2020-10-18 21:09:37

标签: python matplotlib

我有以下python代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 100)
y = np.linspace(0, 10, 100)
X, Y = np.meshgrid(x, y, indexing='ij')
Z = np.sin(X+Y)

plt.pcolormesh(X, Y, Z)
plt.colorbar()
plt.contour(X, Y, Z, levels=[0.5, 0.75], colors=['black','cyan'])

plt.show()

哪个给出以下输出:

The wrong output -- no contour marks on the colorbar

我想在颜色栏上放置轮廓标记,如下所示:

The more correct output -- contour marks on the colorbar

我已经进行了实验和阅读,但是我看不到一种在相同的颜色栏上有效绘制两个数量的方法。

1 个答案:

答案 0 :(得分:1)

plt.colorbar返回一个colorbar对象,您可以使用.ax从中获取其绘制的轴。从那里开始,事情应该很简单:

plt.pcolormesh(X, Y, Z)
cb = plt.colorbar()
plt.contour(X, Y, Z, levels=[0.5, 0.75], colors=['black','cyan'])

ax = cb.ax
xmin, xmax = ax.get_xlim()
ax.hlines([0.5, 0.75], xmin, xmax, colors=['black','cyan'], linewidth=5)

输出:

enter image description here