CodeGym /课程 /Python SELF ZH /将图表保存为图片以便用于报告

将图表保存为图片以便用于报告

Python SELF ZH
第 42 级 , 课程 1
可用

1. 保存图表的方式

今天我们不仅绘制出漂亮的图表,还要将它们变成能插入你报告、演示文稿或者相册里的精彩图片,比如:"看,我做到了!"。谁知道呢,也许你的图表会在社交媒体上爆红,然后你就能品尝属于你的那15分钟的荣耀时刻!

就像一档好的美食节目,我们会先来看看有哪些“配方”可选。在保存图表时可以选择多种文件格式,每种格式都有自己的特点,了解这些细节会帮你选到合适的“菜品”。以下是一些常见的选项:

  • PNG (Portable Network Graphics): 最流行的网络图像格式之一。特点是高效压缩无损质量,支持透明背景,大部分应用都能很好支持它。
  • PDF (Portable Document Format): 嵌入文档的理想选择。这是一种矢量格式,缩放时图像依然清晰。
  • SVG (Scalable Vector Graphics): 又是一种矢量格式,非常适合网络使用。支持交互性和动画。
  • JPEG (Joint Photographic Experts Group): 通常用于照片,因为带有损失的压缩,对带有文本的图表可能不太合适。

现在我们了解了有哪些选项,让我们通过Matplotlib库中的savefig()函数来保存图表。

通过savefig()保存图表

Matplotlib让保存图表变得特别轻松,就像手机操作系统的更新(当然是在一切顺利的情况下)。让我们来看看如何实现。

Python

import matplotlib.pyplot as plt

# 假设我们有一个简单的图表
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y, label='简单数字')
plt.xlabel('x')
plt.ylabel('y')
plt.title('简单数字折线图')
plt.legend()

# 将图表保存到文件
plt.savefig('primes.png')

这个代码会在当前目录下创建一个文件primes.png。就这么简单!没必要背魔法咒语,也不用向数字之神献祭。只是把plt.show()换成plt.savefig('路径/文件名'),然后搞定!

2. 保存时的参数调整

当然,仅仅保存图表是不够的——我们希望它看起来完美无缺!正如俗话所说:“如果图表画质差,就没人会注意到。”或者类似这样的意思吧。

调整图片质量和分辨率

为了创建高质量图像,可以调整参数dpi(每英寸点数),它定义了图像的像素密度。值越高,图片越细致。对于网络来说通常72 dpi就够了,而用于打印则需要300 dpi或更高。

Python

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

plt.plot(x, y)

# 保存高质量图像
plt.savefig("high_quality_plot.png", dpi=300)
plt.show()

这里dpi=300提高了图片质量,使它更加清晰,特别适合报告和打印用。

保存无边框和额外空白的图像

Matplotlib默认会在图表周围添加边距,这在插入报告时可能不太方便。要保存无边框的图片,可以使用参数bbox_inches="tight"

Python

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]

plt.plot(x, y)

# 保存无边框的图片
plt.savefig("plot_no_borders.png", bbox_inches="tight")
plt.show()

参数bbox_inches="tight"去除了图表周围的多余边距,让图片更紧凑。

保存前设置图表大小

有时候需要保存特定尺寸的图表(比如用于演示文稿或网络发布)。可以通过figure(figsize=(宽, 高))来设置图表的尺寸(单位为英寸)。

Python

import matplotlib.pyplot as plt

# 设置图表尺寸
plt.figure(figsize=(10, 5))  # 宽10英寸,高5英寸

x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]

plt.plot(x, y)
plt.title("指定尺寸的图表")

# 保存指定尺寸的图表
plt.savefig("custom_size_plot.png")
plt.show()

在这个例子中,图表以10x5英寸的尺寸保存。可以根据报告或演示文稿的需求自由调整尺寸。

savefig()的其他参数

  • transparent=True: 保存带透明背景的图片,这对插入彩色或透明背景非常有用。
  • pad_inches: 设置图表周围的额外边距。通常与bbox_inches一起使用。
  • format: 指定文件保存格式,如pdf、png、jpg等。

如果没有指定format参数,方法savefig()会尝试根据文件名来确定格式。

Python

# 保存图表并设置参数
plt.savefig('primes_high_res', dpi=300, pad_inches='tight', format='png', transparent=True)

现在你的图表会看起来非常精致,任何看到它的人都会说:“哇,你真的懂你在做什么!”

3. 保存实例

通常我们有很多保存实例可供测试和调试。通过这些例子可以了解不同参数对最终结果的影响。

保存为PDF格式

如果你需要把图表嵌入报告或演示文稿,PDF格式是最理想的选择。它的矢量特性让图片缩放时不会失真。

Python

plt.savefig('primes.pdf', bbox_inches='tight')

保存为SVG矢量格式

SVG非常适合用于网页或带动画的插件,因为它的特性支持互动性。

Python

plt.savefig('primes.svg', bbox_inches='tight')

保存为JPEG格式

如果你的图表以图像为主,而不是清晰的线条和文字,那么JPEG格式可能很有用。

Python

plt.savefig('primes.jpg', quality=95)

实用建议

  • 文件名:选择清晰且描述性强的文件名,以便更容易查找和重复使用。
  • 检查质量:在报告中使用之前先在屏幕上检查图表,确保质量符合要求。
  • 透明背景:在为演示文稿或网页设计图表时,这特别有用。

常见问题

保存图表时可能会遇到一些问题,就像试图更新打印机驱动时遇到的麻烦一样。其中比较常见的问题是savefig()在像Jupyter Notebook这样的环境中不起作用。这是因为交互环境中图表只能显示而不能保存。这时可以通过plt.close()方法在保存后关闭图表来解决问题。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION