You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python绘制基于X、Y、半径、强度字段的彩色变半径圆图

实现方案

使用Matplotlib的Circle补丁类可以完美满足可变半径圆形的绘制需求,配合分箱映射色阶即可实现你要的效果,具体实现如下:

核心实现逻辑

  • 先对Intensity字段做分箱:可以选择等宽分箱或者等频分箱,划分为4~5个区间,每个区间绑定一个固定颜色
  • 遍历所有数据点,为每个点生成对应半径的圆形实例,颜色匹配对应分箱的色值
  • 把所有圆形添加到画布后调整坐标轴,保证圆形不会被拉伸

示例代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib.colors import ListedColormap

# 替换为你的真实数据
# data = pd.read_csv("你的数据文件.csv", usecols=["X", "Y", "R", "Intensity"])
# 这里是模拟的样本数据
np.random.seed(42)
data = pd.DataFrame({
    "X": np.random.uniform(0, 20, 80),
    "Y": np.random.uniform(0, 20, 80),
    "R": np.random.uniform(0.2, 1.2, 80),
    "Intensity": np.random.uniform(0, 200, 80)
})

# 1. 把Intensity分为5个分箱,对应5种固定颜色
bin_num = 5
data["color_bin"] = pd.cut(data["Intensity"], bins=bin_num, labels=False)
# 自定义分箱对应的颜色,可根据需求修改
custom_cmap = ListedColormap(["#f0f9e8", "#bae4bc", "#7bccc4", "#43a2ca", "#0868ac"])

# 2. 绘制画布
fig, ax = plt.subplots(figsize=(9, 9))
# 逐个添加圆形
for _, row in data.iterrows():
    circle = Circle(
        xy=(row["X"], row["Y"]),
        radius=row["R"],
        color=custom_cmap(row["color_bin"]),
        alpha=0.75, # 半透明处理重叠问题
        edgecolor="#ffffff", # 白边区分相邻圆形
        linewidth=0.5
    )
    ax.add_patch(circle)

# 3. 调整坐标轴配置
ax.set_xlim(data["X"].min() - 1, data["X"].max() + 1)
ax.set_ylim(data["Y"].min() - 1, data["Y"].max() + 1)
ax.set_aspect("equal") # 强制等比例,避免圆形被拉伸成椭圆
# 添加色标说明
sm = plt.cm.ScalarMappable(cmap=custom_cmap, norm=plt.Normalize(vmin=data["Intensity"].min(), vmax=data["Intensity"].max()))
sm.set_array([])
plt.colorbar(sm, label="Intensity", shrink=0.8)
plt.xlabel("X")
plt.ylabel("Y")

plt.show()

可选优化方案

  • 如果数据量很大、圆形重叠严重,可以调整alpha参数降低透明度,或者新增排序逻辑让高Intensity的圆形绘制在上层
  • 如果需要交互效果(悬停看数值、缩放),可以改用Plotly的散点图接口,通过marker_size映射半径R,marker_color映射分箱后的Intensity即可实现

内容的提问来源于stack exchange,提问作者Henri Plana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 13:24:07