保存 matplotlib 图形的特定部分

Oma*_*chi 2 python matplotlib

我想通过给出矩形的坐标来仅保存 matplotlib 图形的特定部分。下面的代码创建并保存整个图形:

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2
plt.scatter(x, y, s=area, c=colors, alpha=0.5)

plt.savefig('Plot.png', format='png')
Run Code Online (Sandbox Code Playgroud)

我只想保存由 4 个点(在数据坐标中)确定的图中的特定部分,例如仅保存突出显示的矩形区域:

期望的结果:仅保存绿色突出显示的部分

Diz*_*ahi 5

您可以使用参数bbox_inches=savefig()分隔要保存的区域。问题是找出该区域的坐标(以英寸为单位)。为此,您必须使用transforms

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.transforms import Bbox

# Fixing random state for reproducibility
np.random.seed(19680801)

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2

fig, ax = plt.subplots()
ax.scatter(x, y, s=area, c=colors, alpha=0.5)
fig.canvas.draw()  # force draw

x0,x1 = 0.2, 0.6
y0,y1 = 0.4, 0.8

bbox = Bbox([[x0,y0],[x1,y1]])
bbox = bbox.transformed(ax.transData).transformed(fig.dpi_scale_trans.inverted())
fig.savefig('test.png', bbox_inches=bbox)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

test.png

在此输入图像描述