本文目录导读:

在Python中保存统计图表主要依靠Matplotlib、Seaborn等库中的savefig()方法,以下是一些最常用的案例和保存技巧:
基础保存方法(Matplotlib)
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 创建图表
plt.plot(x, y)"基础折线图")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 保存图表(必须在 show() 之前调用)
plt.savefig('my_plot.png') # 保存为PNG格式
plt.show()
常用的保存格式
# PNG格式(默认)
plt.savefig('plot.png')
# JPEG格式
plt.savefig('plot.jpg', quality=95) # quality参数控制压缩质量
# PDF格式(矢量图)
plt.savefig('plot.pdf')
# SVG格式(矢量图,适合网页使用)
plt.savefig('plot.svg')
# EPS格式(学术论文常用)
plt.savefig('plot.eps')
调整图片质量和尺寸
# 设置图片分辨率(dpi)
plt.savefig('high_res_plot.png', dpi=300) # 高分辨率印刷质量
# 设置图片大小(英寸)
plt.figure(figsize=(8, 6)) # 8英寸宽,6英寸高
plt.plot(x, y)
plt.savefig('custom_size_plot.png', dpi=100)
# 自动调整图片边距
plt.savefig('tight_plot.png', bbox_inches='tight') # 自动裁剪空白边距
透明背景和颜色设置
# 透明背景(适合网页或PPT嵌入)
plt.savefig('transparent_plot.png', transparent=True)
# 设置背景颜色
plt.savefig('white_bg_plot.png', facecolor='white') # 白色背景
plt.savefig('custom_bg.png', facecolor='lightyellow') # 自定义背景色
完整的Seaborn保存示例
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
tips = sns.load_dataset("tips")
# 创建统计图表
plt.figure(figsize=(10, 6))
sns.boxplot(x="day", y="total_bill", data=tips)
plt.title("小费金额按天分布", fontsize=14)
# 保存图表
plt.savefig('tips_boxplot.png',
dpi=200,
bbox_inches='tight',
facecolor='white',
edgecolor='none')
plt.show()
批量保存图表
import os
# 创建保存目录
save_dir = "charts"
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 批量保存
for i in range(5):
plt.figure()
plt.plot([1, 2, 3], [i, i+1, i+2])
plt.title(f"图表 {i+1}")
# 保存到指定目录
plt.savefig(f"{save_dir}/chart_{i+1}.png", dpi=150)
plt.close() # 关闭当前图表,避免内存累积
Pandas直接保存图表
import pandas as pd
import matplotlib.pyplot as plt
# 创建DataFrame
df = pd.DataFrame({
'A': [1, 3, 5],
'B': [2, 4, 6]
})
# 直接使用Pandas绘图并保存
ax = df.plot(kind='bar', title="Pandas柱状图")
fig = ax.get_figure()
fig.savefig('pandas_plot.png', dpi=100)
重要注意事项
import matplotlib.pyplot as plt
# ❌ 错误做法
plt.plot([1, 2, 3], [1, 2, 3])
plt.show() # 先显示
plt.savefig('wrong.png') # 再保存 - 这会保存空白图
# ✅ 正确做法
plt.plot([1, 2, 3], [1, 2, 3])
plt.savefig('correct.png') # 在 show() 之前保存
plt.show()
# ✅ 或者使用 close() 后再保存
plt.plot([1, 2, 3], [1, 2, 3])
plt.show()
plt.savefig('alternative.png') # 不推荐,可能保存空白
中文字体支持(防止乱码)
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置黑体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
plt.plot([1, 2, 3], [1, 2, 3])"中文字体测试")
plt.savefig('chinese_plot.png', dpi=100)
总结最佳实践
import matplotlib.pyplot as plt
# 推荐的标准保存方式
def save_chart(filename, fig=None, dpi=200):
"""统一保存图表"""
if fig is None:
fig = plt.gcf() # 获取当前图表
fig.savefig(filename,
dpi=dpi,
bbox_inches='tight', # 自动裁剪空白
facecolor='white', # 白色背景
edgecolor='none',
transparent=False)
print(f"图表已保存到: {filename}")
# 使用示例
plt.plot([1, 2, 3], [1, 2, 3])
save_chart('best_practice_plot.png')
plt.show()
这些方法可以满足大多数情况下的统计图表保存需求,根据你的具体用途(网页、论文、报告、演示等),选择合适的格式和参数即可。