2016-05-30 7 views
5

imshowmatplotlibに入力して、hsvの値をプロットしようとしています。問題は、私が使用しているメソッドは、hsvの3つの値を持つタプルを返しますが、imshowrgbと解釈します。値がhsvの値であることをimshowに伝える方法はありますか?それは強度値に基づいて、他の人よりも少ない飽和を持つ必要がありますプロット上で正しくいくつかの領域を働いた場合 enter image description hereimshowでhsv値をプロットする

:私は、次のプロットを得る

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.colors as mcolors 


def G(x, y): 
    s = x + 1j*y 
    return (s+2)/(s**2 + s + 1) 

x = np.linspace(-3, 3, 1000) 
y = np.linspace(-3, 3, 1000) 

xx, yy = np.meshgrid(x, y) 
norm = mcolors.Normalize() 
zz = G(xx, yy) 
phase = np.angle(zz) 
mag = np.abs(zz) 

# color converter 
c = mcolors.ColorConverter().to_rgb 

# Custom rgb Colormap 
rgb = make_colormap(
    [c('red'), c('yellow'), 0.33, c('yellow'), c('green'), c('cyan'), 0.5, c('cyan'), 
    c('blue'), c('magenta'), 0.833, c('magenta'), c('red')]) 

# Turn data points into rgb values 
z_data_rgb = rgb(norm(phase)) 
# normalizing the intensity values 
intensity = norm(mag) 

# defining light source 
ls = mcolors.LightSource() 

# plotting 
plt.imshow(ls.blend_hsv(z_data_rgb, intensity), extent=[-3, 3, -3, 3]) 
plt.show() 

は、ここに私のコードです。

おかげrgb色でhsv_to_rgbとプロットを使用しないのはなぜ

答えて

6

from matplotlib.colors import hsv_to_rgb 
rgb = hsv_to_rgb(hsv) 
関連する問題