Python读取Excel绘散点图
使用 Python 的 pyecharts、matplotlib 和 seaborn 三个库从 Excel 中读取数据并绘制散点图。每个库的代码示例均包含核心类、函数和属性的详细说明。
1. 使用 pyecharts 绘制散点图
pyecharts 是交互式可视化库,适合生成动态网页图表,支持悬停显示数据详情。
代码示例:
import pandas as pd
from pyecharts.charts import Scatter
from pyecharts import options as opts
# 读取Excel数据
df = pd.read_excel("data.xlsx")
x_data = df["X列"].tolist() # X轴数据列
y_data = df["Y列"].tolist() # Y轴数据列
# 创建散点图对象
scatter = Scatter()
# 添加数据
scatter.add_xaxis(xaxis_data=x_data)
scatter.add_yaxis(
series_name="数据分布", # 系列名称
y_axis=y_data,
symbol_size=10, # 点的大小
color="blue", # 点的颜色
label_opts=opts.LabelOpts(is_show=False) # 不显示数据标签
)
# 配置全局选项
scatter.set_global_opts(
title_opts=opts.TitleOpts(title="X-Y散点图"),
xaxis_opts=opts.AxisOpts(name="X轴名称"),
yaxis_opts=opts.AxisOpts(name="Y轴名称"),
tooltip_opts=opts.TooltipOpts(
formatter="{a}: [{c}]" # 提示框格式:系列名 + (x,y)
)
)
# 渲染为HTML文件
scatter.render("pyecharts_scatter.html")
核心类与参数:
Scatter(): 散点图对象,属于pyecharts.charts.Scatter类。add_xaxis()/add_yaxis(): 添加 X/Y 轴数据。symbol_size: 点的大小(数值或函数动态控制)。color: 点的颜色(支持十六进制或颜色名称)。
set_global_opts(): 配置标题、坐标轴、提示框等。
2. 使用 matplotlib 绘制散点图
matplotlib 是基础绘图库,适合生成高度定制的静态图表。
代码示例:
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel数据
df = pd.read_excel("data.xlsx")
x_data = df["X列"]
y_data = df["Y列"]
# 创建画布和坐标系
fig, ax = plt.subplots(figsize=(10, 6))
# 绘制散点图
scatter = ax.scatter(
x=x_data,
y=y_data,
s=50, # 点的大小
c="green", # 颜色
alpha=0.7, # 透明度(0-1)
edgecolors="black", # 边框颜色
linewidths=0.5 # 边框宽度
)
# 配置标题和坐标轴
ax.set_title("X-Y散点图", fontsize=14)
ax.set_xlabel("X轴名称", fontsize=12)
ax.set_ylabel("Y轴名称", fontsize=12)
# 添加网格
ax.grid(True, linestyle="--", alpha=0.5)
# 显示颜色条(若颜色映射数值)
# plt.colorbar(scatter, label="数值标签")
# 显示图表
plt.tight_layout()
plt.savefig("matplotlib_scatter.png")
plt.show()
核心函数与参数:
ax.scatter(): 绘制散点图的核心函数。s: 点的大小(标量或数组)。c: 颜色(支持颜色名称、十六进制或数值数组映射)。alpha: 透明度(0 透明,1 不透明)。edgecolors: 边框颜色。
plt.colorbar(): 显示颜色条(当颜色映射数值时)。
3. 使用 seaborn 绘制散点图
seaborn 基于 matplotlib,语法简洁,支持分类着色和统计功能。
代码示例:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 读取Excel数据
df = pd.read_excel("data.xlsx")
# 设置主题
sns.set_theme(style="darkgrid", font="SimHei") # 深色网格主题
# 创建散点图
plt.figure(figsize=(10, 6))
ax = sns.scatterplot(
data=df,
x="X列",
y="Y列",
hue="类别列", # 按类别列着色(需存在分类列)
size="数值列", # 按数值列调整点的大小(可选)
palette="viridis", # 颜色映射
sizes=(30, 200), # 点的大小范围
alpha=0.8,
edgecolor="black"
)
# 配置标题和标签
ax.set_title("分类散点图(Seaborn)", fontsize=14)
ax.set_xlabel("X轴名称", fontsize=12)
ax.set_ylabel("Y轴名称", fontsize=12)
# 调整图例位置
plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left")
# 显示图表
plt.tight_layout()
plt.savefig("seaborn_scatter.png")
plt.show()
核心函数与参数:
sns.scatterplot(): 散点图绘制函数。hue: 按指定列分类着色(需为分类数据)。size: 按指定列调整点的大小(需为数值数据)。palette: 颜色映射主题(如"viridis"、"Set2")。sizes: 点的大小范围(如(30, 200))。
sns.set_theme(): 设置主题样式(darkgrid、whitegrid等)。
对比总结
| 库 | 特点 | 适用场景 |
|---|---|---|
pyecharts |
交互式图表,支持动态展示和网页嵌入 | 需要交互性或网页展示 |
matplotlib |
高度可定制化,支持复杂样式调整 | 学术论文、高精度静态图表 |
seaborn |
语法简洁,支持分类着色和统计功能 | 快速生成美观的分类散点图 |
注意事项
- 数据预处理:
- 确保 Excel 中的 X/Y 列为数值类型。
- 处理缺失值(如
df.dropna())。
- 颜色映射:
- 使用
hue参数时,确保分类列唯一值数量合理(避免过多颜色)。
- 使用
- 性能优化:
- 数据量过大时,调整
alpha透明度避免点重叠。
- 数据量过大时,调整
浙公网安备 33010602011771号