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

如何在Matplotlib绘制的HSV色轮上叠加黑色散点?

在HSV色轮上叠加黑色散点的实现方法

你可以直接在已有的极坐标轴(display_axes)上调用scatter()方法来叠加黑色散点,该轴本身是极坐标投影类型,完全支持散点图绘制。以下是修改后的完整代码:

import numpy as np
from matplotlib import cm
import matplotlib.pyplot as plt  # 原代码遗漏该导入,需补上
import matplotlib as mpl

fig = plt.figure()

display_axes = fig.add_axes([0.1,0.1,0.8,0.8], projection='polar')
display_axes._direction = 2*np.pi ## 利用隐藏字段让色轮按0到2π的方向循环

norm = mpl.colors.Normalize(0.0, 2*np.pi)

# 绘制HSV色轮
quant_steps = 2056
cb = mpl.colorbar.ColorbarBase(display_axes, cmap=cm.get_cmap('hsv',quant_steps),
                               norm=norm,
                               orientation='horizontal')

# 隐藏边框和轴标签
cb.outline.set_visible(False)                                 
display_axes.set_axis_off()

# --------------------- 新增:绘制黑色散点 ---------------------
# 示例:生成随机极坐标点数据
# theta:角度(弧度,范围0到2π),r:半径(范围0到1,对应色轮中心到边缘)
np.random.seed(42)  # 设置随机种子保证结果可复现
theta = np.random.uniform(0, 2*np.pi, 10)  # 生成10个随机角度
r = np.random.uniform(0.2, 0.9, 10)  # 生成10个随机半径(避开中心和最边缘)

# 在极坐标轴上绘制黑色散点
display_axes.scatter(theta, r, color='black', s=50, zorder=10)  # zorder确保点在色轮上方

plt.show()

关键说明:

  • 补全原代码遗漏的import matplotlib.pyplot as plt,否则无法正常调用绘图相关方法。
  • scatter()的前两个参数对应极坐标的角度(theta,弧度)和半径(r),r取值范围建议在0到1之间,对应色轮从中心到边缘的区域。
  • 设置zorder=10可确保散点显示在色轮图层上方,避免被色轮覆盖。
  • 你可以根据需求替换theta和r的数据源,比如用固定值定位特定位置的点。

内容的提问来源于stack exchange,提问作者Daniel Paczuski Bak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:27:23