Matplotlib:contourlevels作为colorbar中的行

时间:2014-09-24 13:31:58

标签: python matplotlib plot

我正在使用Matplotlib将一些2D数据绘制为pcolor(),然后将其与contour()重叠。

enter image description here

当我使用colorbar()时,我会得到以下颜色栏中的一个或另一个:

colorbars for <code>contour()</code> or <code>pcolor()</code>

如何使轮廓水平(左)的水平线也显示在彩色条(右)?

1 个答案:

答案 0 :(得分:4)

根据您修改后的问题,我明白您的意思。这仍然可以使用add_lines完成。此功能将非填充等高线图中的线条添加到颜色条。可以找到文档here

因此,首先根据您的pcolor图定义颜色条,稍后您可以将contour中的线条添加到该颜色条:

import numpy
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

#Generate data
delta = 0.025

x = numpy.arange(-3.0, 3.0, delta)
y = numpy.arange(-2.0, 2.0, delta)

X, Y = numpy.meshgrid(x, y)

Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
# difference of Gaussians
Z = 10.0 * (Z2 - Z1)

#Plot
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)

PC = ax1.pcolor(X, Y, Z)
CF = ax1.contour(X, Y, Z, 50, colors = "black")

cbar = plt.colorbar(PC)
cbar.add_lines(CF)

plt.show()

enter image description here