Kel Solaar给出的答案非常好,但它实际上并没有使用matplotlib。 下面是使用matplolib、numpy和coloursys得到的类似结果。
fig = plt.figure()
ax = fig.add_subplot(projection='polar')
rho = np.linspace(0,1,100) # Radius of 1, distance from center to outer edge
phi = np.linspace(0, math.pi*2.,1000 ) # in radians, one full circle
RHO, PHI = np.meshgrid(rho,phi) # get every combination of rho and phi
h = (PHI-PHI.min()) / (PHI.max()-PHI.min()) # use angle to determine hue, normalized from 0-1
h = np.flip(h)
s = RHO # saturation is set as a function of radias
v = np.ones_like(RHO) # value is constant
# convert the np arrays to lists. This actually speeds up the colorsys call
h,s,v = h.flatten().tolist(), s.flatten().tolist(), v.flatten().tolist()
c = [colorsys.hsv_to_rgb(*x) for x in zip(h,s,v)]
c = np.array(c)
ax.scatter(PHI, RHO, c=c)
_ = ax.axis('off')
2条答案
按热度按时间8dtrkrch1#
以下代码使用Colour进行HSV到RGB的转换:
我们在这个交互式Jupyter Notebook Matplotlib小部件中使用它:
该存储库可从以下位置获得:https://github.com/colour-science/gamut-mapping-ramblings
iezvtpos2#
Kel Solaar给出的答案非常好,但它实际上并没有使用matplotlib。
下面是使用
matplolib
、numpy
和coloursys
得到的类似结果。请注意,这会导致图中蓝色/紫色指向上方,而红色指向右侧。根据我的经验,这是典型的光流色调图。要实现OP发布的图像,请更改以下内容,以便图开始绘制在左侧而不是右侧: