Python读取Excel绘制折线图

使用 Python 的 pyechartsmatplotlibseaborn 三个库从 Excel 中读取数据并绘制折线图。每个库的代码示例均包含核心类、函数和属性的详细说明。


1. 使用 pyecharts 绘制折线图

pyecharts 是交互式可视化库,适合生成动态网页图表。

代码示例:

import pandas as pd
from pyecharts.charts import Line
from pyecharts import options as opts

# 读取Excel数据
df = pd.read_excel("data.xlsx")
x_data = df["日期"].tolist()  # X轴数据(如日期)
y_data = df["销售额"].tolist()  # Y轴数据(如销售额)

# 创建折线图对象
line = Line()

# 添加数据
line.add_xaxis(x_data)
line.add_yaxis(
    series_name="销售额", 
    y_axis=y_data,
    symbol="circle",  # 数据点标记形状
    is_smooth=True,   # 平滑曲线
    label_opts=opts.LabelOpts(is_show=False)  # 不显示数据标签
)

# 配置全局选项
line.set_global_opts(
    title_opts=opts.TitleOpts(title="销售额趋势折线图"),  # 标题
    xaxis_opts=opts.AxisOpts(
        name="日期",
        axislabel_opts=opts.LabelOpts(rotate=45)  # X轴标签旋转45度
    ),
    yaxis_opts=opts.AxisOpts(name="销售额(万元)"),
    tooltip_opts=opts.TooltipOpts(trigger="axis")  # 提示框显示全部数据点
)

# 渲染为HTML文件
line.render("pyecharts_line.html")

核心类与函数:

  • Line(): 折线图对象,属于 pyecharts.charts.Line 类。
  • add_xaxis(x_data): 添加 X 轴数据(如日期)。
  • add_yaxis(series_name, y_axis): 添加 Y 轴数据。
    • symbol: 数据点标记形状("circle""rect" 等)。
    • is_smooth: 是否平滑曲线。
  • set_global_opts(): 配置全局参数。
    • title_opts: 标题配置。
    • xaxis_opts/yaxis_opts: 坐标轴配置。
    • tooltip_opts: 提示框配置(悬停时显示详细信息)。

2. 使用 matplotlib 绘制折线图

matplotlib 是基础绘图库,适合生成高度定制的静态图表。

代码示例:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter  # 日期格式化

# 读取Excel数据(假设日期列为datetime类型)
df = pd.read_excel("data.xlsx")
df["日期"] = pd.to_datetime(df["日期"])  # 转换为datetime类型

# 创建画布和坐标系
fig, ax = plt.subplots(figsize=(12, 6))

# 绘制折线图
ax.plot(
    df["日期"],          # X轴数据
    df["销售额"],        # Y轴数据
    marker="o",         # 数据点标记
    linestyle="-",      # 线条样式(实线)
    linewidth=2,        # 线条宽度
    color="steelblue",  # 颜色
    markersize=8,       # 标记大小
    label="销售额"       # 图例标签
)

# 配置标题和坐标轴
ax.set_title("销售额趋势折线图", fontsize=14)
ax.set_xlabel("日期", fontsize=12)
ax.set_ylabel("销售额(万元)", fontsize=12)

# 格式化日期显示
date_format = DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(date_format)
plt.xticks(rotation=45)  # 旋转日期标签

# 添加图例和网格
ax.legend(loc="upper left")
ax.grid(True, linestyle="--", alpha=0.6)

# 显示图表
plt.tight_layout()
plt.savefig("matplotlib_line.png")
plt.show()

核心函数与参数:

  • ax.plot(): 绘制折线图的核心函数。
    • marker: 数据点形状("o" 圆形,"s" 方形)。
    • linestyle: 线条样式("-" 实线,"--" 虚线)。
    • linewidth: 线条宽度。
    • color: 线条颜色(支持十六进制颜色码)。
  • DateFormatter: 日期格式化工具(需导入 matplotlib.dates)。
  • ax.legend(): 控制图例显示位置和样式。

3. 使用 seaborn 绘制折线图

seaborn 基于 matplotlib,语法简洁,适合快速生成统计图表。

代码示例:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 读取Excel数据
df = pd.read_excel("data.xlsx")
df["日期"] = pd.to_datetime(df["日期"])  # 转换为datetime类型

# 设置主题
sns.set_theme(style="darkgrid", font="SimHei")  # 深色网格主题

# 创建折线图
plt.figure(figsize=(12, 6))
ax = sns.lineplot(
    data=df,
    x="日期",
    y="销售额",
    marker="o",          # 数据点标记
    markersize=8,        # 标记大小
    color="royalblue",   # 颜色
    linewidth=2,         # 线条宽度
    estimator=None       # 关闭数据聚合(显示原始数据点)
)

# 配置标题和标签
ax.set_title("销售额趋势折线图(Seaborn)", fontsize=14)
ax.set_xlabel("日期", fontsize=12)
ax.set_ylabel("销售额(万元)", fontsize=12)

# 旋转日期标签
plt.xticks(rotation=45)

# 显示图表
plt.tight_layout()
plt.savefig("seaborn_line.png")
plt.show()

核心函数与参数:

  • sns.lineplot(): 折线图绘制函数。
    • data: 输入数据(DataFrame)。
    • x/y: 指定列名。
    • marker/markersize: 数据点标记样式。
    • estimator: 聚合函数(None 显示原始数据,"mean" 显示均值)。
  • sns.set_theme(): 设置主题样式(darkgridwhitegrid 等)。

对比总结

特点 适用场景
pyecharts 交互式图表,支持动态展示和网页嵌入 需要交互性或网页展示
matplotlib 高度可定制化,支持复杂图表细节调整 学术论文、高精度静态图表
seaborn 语法简洁,默认美观,集成统计功能 快速生成美观的统计图表

注意事项

  1. 日期处理:确保 Excel 中的日期列已转换为 datetime 类型(使用 pd.to_datetime())。
  2. 数据排序:绘制时间序列前,按日期排序数据:df = df.sort_values("日期")
  3. 缺失值处理:使用 df.dropna()df.fillna() 处理缺失值,避免折线断裂。
posted @ 2025-04-23 08:04  天堂面包  阅读(305)  评论(0)    收藏  举报