等高线演示

演示简单的等高线绘制,图像上的等高线带有等高线的颜色条,并标出等高线。

另见轮廓图像示例

  1. import matplotlib
  2. import numpy as np
  3. import matplotlib.cm as cm
  4. import matplotlib.pyplot as plt
  5. delta = 0.025
  6. x = np.arange(-3.0, 3.0, delta)
  7. y = np.arange(-2.0, 2.0, delta)
  8. X, Y = np.meshgrid(x, y)
  9. Z1 = np.exp(-X**2 - Y**2)
  10. Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
  11. Z = (Z1 - Z2) * 2

使用默认颜色创建带有标签的简单等高线图。clabel的内联参数将控制标签是否画在轮廓的线段上,移除标签下面的线。

  1. fig, ax = plt.subplots()
  2. CS = ax.contour(X, Y, Z)
  3. ax.clabel(CS, inline=1, fontsize=10)
  4. ax.set_title('Simplest default with labels')

等高线演示示例

等高线的标签可以手动放置,通过提供位置列表(在数据坐标中)。有关交互式布局,请参见ginput_book_clabel.py。

  1. fig, ax = plt.subplots()
  2. CS = ax.contour(X, Y, Z)
  3. manual_locations = [(-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
  4. ax.clabel(CS, inline=1, fontsize=10, manual=manual_locations)
  5. ax.set_title('labels at selected locations')

等高线演示示例2

你可以强制所有的等高线是相同的颜色。

  1. fig, ax = plt.subplots()
  2. CS = ax.contour(X, Y, Z, 6,
  3. colors='k', # negative contours will be dashed by default
  4. )
  5. ax.clabel(CS, fontsize=9, inline=1)
  6. ax.set_title('Single color - negative contours dashed')

等高线演示示例3

你可以将负轮廓设置为实线而不是虚线:

  1. matplotlib.rcParams['contour.negative_linestyle'] = 'solid'
  2. fig, ax = plt.subplots()
  3. CS = ax.contour(X, Y, Z, 6,
  4. colors='k', # negative contours will be dashed by default
  5. )
  6. ax.clabel(CS, fontsize=9, inline=1)
  7. ax.set_title('Single color - negative contours solid')

等高线演示示例4

并且你可以手动指定轮廓的颜色。

  1. fig, ax = plt.subplots()
  2. CS = ax.contour(X, Y, Z, 6,
  3. linewidths=np.arange(.5, 4, .5),
  4. colors=('r', 'green', 'blue', (1, 1, 0), '#afeeee', '0.5')
  5. )
  6. ax.clabel(CS, fontsize=9, inline=1)
  7. ax.set_title('Crazy lines')

等高线演示示例5

也可以使用颜色图来指定颜色;默认的颜色图将用于等高线。

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(Z, interpolation='bilinear', origin='lower',
  3. cmap=cm.gray, extent=(-3, 3, -2, 2))
  4. levels = np.arange(-1.2, 1.6, 0.2)
  5. CS = ax.contour(Z, levels, origin='lower', cmap='flag',
  6. linewidths=2, extent=(-3, 3, -2, 2))
  7. # Thicken the zero contour.
  8. zc = CS.collections[6]
  9. plt.setp(zc, linewidth=4)
  10. ax.clabel(CS, levels[1::2], # label every second level
  11. inline=1, fmt='%1.1f', fontsize=14)
  12. # make a colorbar for the contour lines
  13. CB = fig.colorbar(CS, shrink=0.8, extend='both')
  14. ax.set_title('Lines with colorbar')
  15. # We can still add a colorbar for the image, too.
  16. CBI = fig.colorbar(im, orientation='horizontal', shrink=0.8)
  17. # This makes the original colorbar look a bit out of place,
  18. # so let's improve its position.
  19. l, b, w, h = ax.get_position().bounds
  20. ll, bb, ww, hh = CB.ax.get_position().bounds
  21. CB.ax.set_position([ll, b + 0.1*h, ww, h*0.8])
  22. plt.show()

等高线演示示例6

参考

下面的示例演示了以下函数和方法的使用:

  1. import matplotlib
  2. matplotlib.axes.Axes.contour
  3. matplotlib.pyplot.contour
  4. matplotlib.figure.Figure.colorbar
  5. matplotlib.pyplot.colorbar
  6. matplotlib.axes.Axes.clabel
  7. matplotlib.pyplot.clabel
  8. matplotlib.axes.Axes.set_position
  9. matplotlib.axes.Axes.get_position

下载这个示例