Matplotlib中的2D HSV颜色空间

10

我正在尝试在matplotlib中复制这个图表(来自维基百科)

enter image description here

基本上是一个二维HSV颜色空间,其中饱和度设置为1.0。以下是我目前所做的事情。

from pylab import *
from numpy import outer

x = outer(arange(0, 1, 0.01), ones(100))

imshow(transpose(x), cmap=cm.hsv)
show()

这会绘制色调通道,但我不知道如何添加第二个通道。

1个回答

24

你需要创建HSV数组并将其转换为RGB,这是一个示例:

import numpy as np
import pylab as pl
from matplotlib.colors import hsv_to_rgb

V, H = np.mgrid[0:1:100j, 0:1:300j]
S = np.ones_like(V)
HSV = np.dstack((H,S,V))
RGB = hsv_to_rgb(HSV)
pl.imshow(RGB, origin="lower", extent=[0, 360, 0, 1], aspect=150)
pl.xlabel("H")
pl.ylabel("V")
pl.title("$S_{HSV}=1$")
pl.show()

输出结果是:

在此输入图像描述


复数 100j300j 的背后思想是什么? - Yannic
1
好的,从numpy文档中得到的信息是:“然而,如果步长是一个复数(例如5j),那么它的模的整数部分被解释为指定在起始值和停止值之间创建点的数量,其中停止值是包含在内的。” - Yannic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接