Python案例如何保存统计图表?

wen python案例 50

本文目录导读:

Python案例如何保存统计图表?

  1. 基础保存方法(Matplotlib)
  2. 常用的保存格式
  3. 调整图片质量和尺寸
  4. 透明背景和颜色设置
  5. 完整的Seaborn保存示例
  6. 批量保存图表
  7. Pandas直接保存图表
  8. 重要注意事项
  9. 中文字体支持(防止乱码)
  10. 总结最佳实践

在Python中保存统计图表主要依靠MatplotlibSeaborn等库中的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()

这些方法可以满足大多数情况下的统计图表保存需求,根据你的具体用途(网页、论文、报告、演示等),选择合适的格式和参数即可。

抱歉,评论功能暂时关闭!