如何使用 Python 中的 contourf() 强制刻度线具有一定的间距和范围?

How can I force ticks to have a certain spacing and range using contourf() in Python?

我正在创建一系列要同时呈现的轮廓;有些图的数据在 (0,6) 范围内,有些在 (4,6) 范围内,但我希望所有轮廓都具有相同的颜色条,范围从 0 到 6。

对于数据在 (0,6) 范围内的图,颜色条的范围是 (0,6),但对于范围 (4,6) 中的其他图,颜色条刻度的间距很奇怪,使多种颜色看起来对应于相同的值。该图将数据合并为整数值。

Plot with data in range (0,6)

Plot with data in range (4,6)

这是我为绘制它们而写的内容,如果其他信息有用,请告诉我:

plt.contourf(r,mass2,D_stdev_coarse)
plt.title('Likely Binary Parameters for System with M={}, Plot 1'.format(m_tot))
plt.xlabel('R [km]')
plt.ylabel('M2, M1={}'.format(mass1))
plt.colorbar(ticks=[1.0,2.0,3.0,4.0,5.0,6.0])
plt.show()

非常感谢您提供的任何帮助。

您可以明确设置等高线图的级别。这样相应的颜色条就会考虑这些级别:

import matplotlib.pyplot as plt
import numpy as np

x, y = np.meshgrid(np.linspace(-2, 2, 200), np.linspace(-2, 2, 200))
z1 = 3 + 1.5 * (np.sin(x) + np.cos(y*y))
z2 = 5 + 0.5 * (np.sin(x) + np.cos(y*y))

#cmap = mcolors.LinearSegmentedColormap.from_list('', ['dodgerblue', 'crimson'], 2)

fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12, 4))
contour1 = ax1.contourf(x, y, z1, levels=range(7), alpha=0.8)
plt.colorbar(contour1, ax=ax1)
contour2 = ax2.contourf(x, y, z2, levels=range(4, 7), alpha=0.8)
plt.colorbar(contour2, ax=ax2)
plt.show()