Python读取Excel绘制折线图
使用 Python 的 pyecharts、matplotlib 和 seaborn 三个库从 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(): 设置主题样式(darkgrid、whitegrid等)。
对比总结
| 库 | 特点 | 适用场景 |
|---|---|---|
pyecharts |
交互式图表,支持动态展示和网页嵌入 | 需要交互性或网页展示 |
matplotlib |
高度可定制化,支持复杂图表细节调整 | 学术论文、高精度静态图表 |
seaborn |
语法简洁,默认美观,集成统计功能 | 快速生成美观的统计图表 |
注意事项
- 日期处理:确保 Excel 中的日期列已转换为
datetime类型(使用pd.to_datetime())。 - 数据排序:绘制时间序列前,按日期排序数据:
df = df.sort_values("日期")。 - 缺失值处理:使用
df.dropna()或df.fillna()处理缺失值,避免折线断裂。
浙公网安备 33010602011771号