Matplotlib Contour Colorbar
在数据可视化中,经常需要展示和比较不同区域的数值分布。使用contour plot可以很直观地展示不同区域的数值分布情况,而colorbar则可以帮助我们更清晰地理解不同颜色对应的数值范围。本文将详细介绍如何在contour plot中添加colorbar,并优化colorbar的显示效果。
1. 基本设置
首先,我们需要导入相关的库,并生成一些数据用于绘制contour plot。
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
然后,我们可以使用plt.contourf()方法创建contour plot并添加colorbar。
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.figure()
contour = plt.contourf(X, Y, Z, levels=20)
plt.colorbar(contour)
plt.show()
Output:
2. 调整Colorbar的外观
有时候,我们需要调整colorbar的外观,比如修改标签字体大小、标签颜色、标签格式等。以下是如何实现这些功能的示例代码。
2.1 修改标签字体大小
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.figure()
contour = plt.contourf(X, Y, Z, levels=20)
cbar = plt.colorbar(contour)
cbar.ax.tick_params(labelsize=12)
plt.show()
Output:
2.2 修改标签颜色
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.figure()
contour = plt.contourf(X, Y, Z, levels=20)
cbar = plt.colorbar(contour)
cbar.ax.yaxis.set_tick_params(color='red')
plt.show()
Output:
2.3 修改标签格式
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.figure()
contour = plt.contourf(X, Y, Z, levels=20)
cbar = plt.colorbar(contour, format='%.2f')
plt.show()
Output:
3. 调整Colorbar的位置
有时候,我们需要将colorbar放置在不同的位置,比如水平放置在图像底部或垂直放置在图像右侧。以下是如何实现这些功能的示例代码。
3.1 将Colorbar水平放置在图像底部
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.figure()
contour = plt.contourf(X, Y, Z, levels=20)
cbar = plt.colorbar(contour, orientation='horizontal')
plt.show()
Output:
3.2 将Colorbar垂直放置在图像右侧
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.figure()
contour = plt.contourf(X, Y, Z, levels=20)
cbar = plt.colorbar(contour, orientation='vertical')
plt.show()
Output:
4. 自定义Colorbar的色谱
除了默认的色谱外,我们还可以自定义colorbar的色谱,使得colorbar更符合我们的需求。以下是如何实现自定义色谱的示例代码。
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.figure()
contour = plt.contourf(X, Y, Z, levels=20, cmap='coolwarm')
plt.colorbar(contour)
plt.show()
Output:
5. 自定义Colorbar的范围
有时候,我们需要手动设置colorbar的范围,比如将colorbar的范围限制在特定数值范围内。以下是如何手动设置colorbar范围的示例代码。
import numpy as np
import matplotlib.pyplot as plt
# 生成二维数组数据
x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.figure()
contour = plt.contourf(X, Y, Z, levels=20)
cbar = plt.colorbar(contour)
cbar.set_clim(-1, 1)
plt.show()