matplotlib 局部放大
时间: 2023-08-29 19:10:53 浏览: 94
你可以使用 `plt.subplots` 和 `plt.imshow` 函数来实现局部放大效果。以下是一个示例代码,演示如何在图像的右下角放大一部分:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成一张示例图像
img = np.random.rand(100, 100)
# 创建一个大小为 (8, 8) 的子图
fig, ax = plt.subplots(figsize=(8, 8))
# 在子图上绘制图像
ax.imshow(img, cmap='gray')
# 设置放大区域的左上角和右下角坐标
zoom_coordinates = (70, 70, 90, 90)
# 计算放大区域的宽度和高度
zoom_width = zoom_coordinates[2] - zoom_coordinates[0]
zoom_height = zoom_coordinates[3] - zoom_coordinates[1]
# 创建一个大小为放大区域两倍的子图
ax_zoom = fig.add_axes([0.65, 0.2, 0.25, 0.25])
ax_zoom.set_xlim([0, zoom_width * 2])
ax_zoom.set_ylim([0, zoom_height * 2])
# 在子图上绘制放大区域
ax_zoom.imshow(img[zoom_coordinates[0]:zoom_coordinates[2], zoom_coordinates[1]:zoom_coordinates[3]], cmap='gray')
# 绘制放大区域的边框
rect = plt.Rectangle((zoom_width * 0.5, zoom_height * 0.5), zoom_width, zoom_height, fill=False, color='red')
ax_zoom.add_patch(rect)
plt.show()
```
这个示例代码先生成了一个随机图像,然后在一个大小为 (8, 8) 的子图上绘制了这个图像。接着,设置了一个放大区域的左上角和右下角坐标,计算了放大区域的宽度和高度,然后创建了一个大小为放大区域两倍的子图,并在其中绘制了放大区域。最后,绘制了放大区域的边框,以突出显示放大区域。运行这个代码,你将看到一个带有局部放大效果的图像。