Python matplotlib中的二维hsv颜色空间

Python matplotlib中的二维hsv颜色空间,python,numpy,matplotlib,Python,Numpy,Matplotlib,我试图在matplotlib(取自维基百科)中复制此图 基本上是2d 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() 这将绘制色调通道,但我不知道如何添加第二个通道。您需要创建HSV阵列并将其转换为RGB,以下是一个示例:

我试图在matplotlib(取自维基百科)中复制此图

基本上是2d 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()

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

您需要创建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()
输出为:


复数
100j
300j
背后的想法是什么?啊,明白了。numpy文档中写道:“但是,如果步长是一个复数(例如5j),则其幅值的整数部分被解释为指定要在开始值和停止值之间创建的点数,其中停止值包括在内。”