读取excel数据并绘制柱状图
如何使用 Python 的 pyecharts、matplotlib 和 seaborn 三个库从 Excel 中读取数据并绘制柱状图。每个库的代码示例均包含核心类、函数和属性的详细说明。
1. 使用 pyecharts 绘制柱状图
pyecharts 是基于百度 ECharts 的交互式可视化库,适合生成动态网页图表。
第一步:读取数据(生成列表数据赋值给x、y)
第二步:创建柱状图对象添加数据
第三步:配置全局选项、渲染
代码示例:
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
# 读取Excel数据
df = pd.read_excel("data.xlsx")
x_data = df["年份"].tolist() # X轴数据
y_data = df["销售额"].tolist() # Y轴数据
# 创建柱状图对象
bar = Bar()
# 添加数据
bar.add_xaxis(x_data)
bar.add_yaxis("销售额(万元)", y_data)
# 配置全局选项
bar.set_global_opts(
title_opts=opts.TitleOpts(title="年度销售额柱状图"), # 标题
xaxis_opts=opts.AxisOpts(name="年份"), # X轴名称
yaxis_opts=opts.AxisOpts(name="销售额"), # Y轴名称
toolbox_opts=opts.ToolboxOpts() # 显示工具箱(保存图片等)
)
# 渲染为HTML文件
bar.render("pyecharts_bar.html")
核心类与函数:
Bar(): 柱状图对象,属于pyecharts.charts.Bar类。add_xaxis(x_data): 添加 X 轴数据,参数为列表。add_yaxis(series_name, y_data): 添加 Y 轴数据,series_name为图例名称。set_global_opts(): 配置全局参数,如标题、坐标轴名称。title_opts: 标题配置(opts.TitleOpts)。xaxis_opts/yaxis_opts: 坐标轴配置(opts.AxisOpts)。toolbox_opts: 工具箱配置(导出图片、数据视图等)。
2. 使用 matplotlib 绘制柱状图
matplotlib 是 Python 最基础的绘图库,高度可定制化。
第一步:读取数据(生成Series数据赋值给x、y)
第二步:绘制柱状图
第三步:添加标签和标题、显示数值标签
第四步:显示图表
代码示例:
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel数据
df = pd.read_excel("data.xlsx")
x_data = df["年份"]
y_data = df["销售额"]
# 创建画布和坐标系
fig, ax = plt.subplots(figsize=(10, 6))
# 绘制柱状图
bars = ax.bar(
x=x_data, # X轴数据
height=y_data, # Y轴数据
color="skyblue", # 颜色
edgecolor="black" # 边框颜色
)
# 添加标签和标题
ax.set_xlabel("年份", fontsize=12)
ax.set_ylabel("销售额(万元)", fontsize=12)
ax.set_title("年度销售额柱状图", fontsize=14)
# 旋转X轴标签
plt.xticks(rotation=45)
# 显示数值标签
for bar in bars:
height = bar.get_height()
ax.text(
bar.get_x() + bar.get_width() / 2, # 水平居中
height + 5, # 垂直偏移
f"{height}", # 文本内容
ha="center", # 水平对齐
va="bottom" # 垂直对齐
)
# 显示图表
plt.tight_layout()
plt.savefig("matplotlib_bar.png") # 保存为图片
plt.show()
核心函数与属性:
plt.subplots(): 创建画布和坐标系,返回fig(画布)和ax(坐标系)。ax.bar(): 绘制柱状图,返回矩形对象列表。x: X 轴数据(列表或数组)。height: Y 轴数据(柱高度)。color: 柱颜色,edgecolor: 边框颜色。
ax.set_xlabel()/ax.set_ylabel(): 设置坐标轴标签。ax.set_title(): 设置图表标题。bar.get_height(): 获取柱的高度。
3. 使用 seaborn 绘制柱状图
seaborn 是基于 matplotlib 的高级封装,支持更简洁的语法和统计功能。
第一步:读取数据
第二步:创建柱状图(将df数据赋值给柱状图数据源,指定x、y值的列索引)
第三步:添加标签和标题、显示数值标签
第四步:显示图表
代码示例:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 读取Excel数据
df = pd.read_excel("data.xlsx")
# 设置主题和字体
sns.set_theme(style="whitegrid", font="SimHei") # 中文需指定字体
# 创建柱状图
plt.figure(figsize=(10, 6))
ax = sns.barplot(
data=df, # 数据源
x="年份", # X轴字段
y="销售额", # Y轴字段
palette="Blues_d", # 调色板
ci=None # 关闭误差线
)
# 添加标题和标签
ax.set_title("年度销售额柱状图", fontsize=14)
ax.set_xlabel("年份", fontsize=12)
ax.set_ylabel("销售额(万元)", fontsize=12)
# 旋转X轴标签
ax.set_xticklabels(ax.get_xticklabels(), rotation=45)
# 显示数值标签
for p in ax.patches:
ax.text(
p.get_x() + p.get_width() / 2, # 水平居中
p.get_height() + 5, # 垂直偏移
f"{p.get_height()}", # 文本内容
ha="center", # 水平对齐
va="bottom" # 垂直对齐
)
# 显示图表
plt.tight_layout()
plt.savefig("seaborn_bar.png")
plt.show()
核心函数与参数:
sns.set_theme(): 设置主题样式(如whitegrid)、字体等。sns.barplot(): 绘制柱状图,支持直接使用 DataFrame 字段名。data: 输入数据(DataFrame)。x/y: 指定 DataFrame 中的列名。palette: 颜色主题(如"Blues_d")。ci: 误差线(设为None关闭)。
ax.patches: 获取所有柱对象(矩形列表)。p.get_height(): 获取单个柱的高度。
对比总结
| 库 | 特点 | 适用场景 |
|---|---|---|
pyecharts |
交互式图表,适合网页展示 | 需要动态交互或网页嵌入 |
matplotlib |
高度可定制化,代码稍复杂 | 需要精细控制的静态图表 |
seaborn |
语法简洁,默认美观,集成统计功能 | 快速生成统计图表 |
根据需求选择合适的库:优先 seaborn 快速绘图,需要交互时用 pyecharts,定制化需求用 matplotlib。
浙公网安备 33010602011771号