Python读取Excel绘散点图

使用 Python 的 pyechartsmatplotlibseaborn 三个库从 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(): 设置主题样式(darkgridwhitegrid 等)。

对比总结

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

注意事项

  1. 数据预处理
    • 确保 Excel 中的 X/Y 列为数值类型。
    • 处理缺失值(如 df.dropna())。
  2. 颜色映射
    • 使用 hue 参数时,确保分类列唯一值数量合理(避免过多颜色)。
  3. 性能优化
    • 数据量过大时,调整 alpha 透明度避免点重叠。
posted @ 2025-04-23 08:13  天堂面包  阅读(166)  评论(0)    收藏  举报