Matplotlib 图像保存

Matplotlib 图像保存

Matplotlib是Python中最常用的绘图库之一,它提供了很多功能以及丰富的图形展示效果。而savefig()函数则是Matplotlib中专门用来保存图像的函数之一。savefig()函数允许我们将Matplotlib生成的图形保存到文件中,支持多种文件格式,包括PNG、PDF、SVG等。

阅读更多:Matplotlib 教程

savefig()函数的语法

savefig()函数的语法如下:

savefig(fname, dpi=None, facecolor='w', edgecolor='w',
        orientation='portrait', papertype=None, format=None,
        transparent=False, bbox_inches=None, pad_inches=0.1,
        frameon=None, metadata=None)
Python

参数介绍:

  • fname:文件名,包含完整的文件路径和文件扩展名。
  • dpi:设置图像的分辨率,以每英寸点数计算。
  • facecolor:图像的边缘颜色,可以用十六进制字符串、RGB元组或HTML颜色名称表示。
  • edgecolor:设置图像的背景颜色,可以用十六进制字符串、RGB元组或HTML颜色名称表示。
  • orientation:设置图像的方向,portrait表示纵向,landscape表示横向。
  • papertype:指定保存图像的纸张类型,例如:”letter”、”legal”、”A4″等等。
  • format:设置保存图像的文件格式,例如:”png”、”pdf”、”svg”等等。
  • transparent:设置是否保存背景透明的图像。
  • bbox_inches:指定要保存的图像部分的边界框,可以是像素点或百分比。
  • pad_inches:指定与图形的边缘之间的距离,以英寸为单位。
  • frameon:指定是否在图像周围绘制边框。
  • metadata:设置需要保存到文件中的元数据(例如作者、标题、日期等等)。

savefig()函数的使用

下面是一个使用savefig()函数的示例:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Sine Wave')

plt.savefig('sine_wave.png', dpi=300, facecolor='yellow', edgecolor='red',
            orientation='portrait', format='png', transparent=True,
            bbox_inches='tight', pad_inches=0.1, frameon=False)
Python

在这个示例中,我们首先生成一个Sine波形并将其绘制在一个图形中。然后使用savefig()函数将图像保存到”sinewave.png”文件中。在保存图像时,我们设置了图像的分辨率,背景和边框颜色,图像的方向和文件格式以及其他一些属性。

控制保存图像的大小

除了上面提到的参数外,我们还可以使用另外一些方法来控制保存图像的大小。

1. figsize参数

在使用Matplotlib绘制图形时,我们通常使用figsize参数来设置图形的大小。在保存图像时,我们可以重复使用该参数来缩放图像。示例代码如下:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Sine Wave')

plt.savefig('sine_wave.png', dpi=300, facecolor='white', edgecolor='black',
            orientation='portrait', format='png', transparent=True,
            bbox_inches= 'tight', pad_inches=0.1, frameon=False)
Python

在这个示例中,我们使用figsize参数来设置图形的大小,然后将其传递给subplots()函数。接下来,在调用savefig()函数时,我们将figsize参数再次传递给该函数,以缩放和调整保存图像的大小。

2. dpi参数和bbox_inches参数

我们也可以使用dpi参数来调整图像的大小。dpi即每英寸点数,它与图像的宽度和高度有关。较高的dpi值会导致产生更多的像素,从而使图像更大。例如,我们可以设置dpi=200,使图像从默认的6.44.8英寸变为12.89.6英寸。示例代码如下:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Sine Wave')

plt.savefig('sine_wave_dpi.png', dpi=200, bbox_inches='tight')
Python

在这个示例中,我们仍然使用普通的plot()函数来绘制图形。但是,我们将dpi参数设置为200,并将bbox_inches设置为”tight”,以确保保存的图像没有空白边缘。

3. pad_inches参数

我们还可以使用pad_inches参数来调整图像的大小。它可以指定与图像的边缘之间的距离,以缩小或放大图像。例如,我们可以将pad_inches设置为2,使图像变大,或将其设置为-2,使图像变小。示例代码如下:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Sine Wave')

plt.savefig('sine_wave_pad.png', dpi=300, bbox_inches='tight', pad_inches=2)
Python

在这个示例中,我们仍然使用plot()函数来绘制图形,但是,我们将pad_inches设置为2,以产生一个较大的图像。

总结

在Matplotlib中,savefig()函数是用来保存图像的重要函数之一。我们在使用该函数时可以设置很多参数,例如dpi、面色、边框颜色、方向、纸张类型、文件格式等等。我们还可以使用其他参数和技巧来控制保存图像的大小,例如figsize、dpi、bbox_inches和pad_inches等等。这些技巧可以帮助我们在保存Matplotlib生成的图像时,快速且有效地控制图像的大小和比例。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程