首页 > 解决方案 > 在 pcolormesh 上覆盖轮廓颜色条

问题描述

我有以下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()

这给出了以下输出:

错误的输出——颜色条上没有轮廓标记

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

更正确的输出——颜色条上的轮廓标记

我已经尝试并阅读过,但我看不到在同一个颜色条上有效地绘制两个数量的方法。

标签: pythonmatplotlib

解决方案


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)

输出:

在此处输入图像描述


推荐阅读