2016-06-15 26 views
1

私は以下の色相/彩度2Dヒストグラムを持っています。私は変更が好きですが、方法は分かりません。 Hue/saturation 2D Histogrammatplotlibでy軸のカラーバーとしての色相勾配

1)することにより、色相勾配を示すカラーバーとy軸値(0-20)を置き換えることはありますか?次のコードは、勾配のnumpyのアレイを構築します。

hue_gradient = np.linspace(0, 1) 
hsv = np.ones(shape=(1, len(hue_gradient), 3), dtype=float) 
hsv[:, :, 0] = hue_gradient 
all_hues = hsv_to_rgb(hsv) 

この配列をカラーバーとして設定し、イメージの左側に配置する方法が問題です。

2)カラーバーをイメージの右側に拡大して、イメージの上下を超えないようにしたいですか?

誰かが私を助けてくれることを願っています。

EDIT: 0から20までの値の代わりにy軸(色相)で見たいものを明確にする。 私は以下のグラデーションを持っています。上記のコードで生成します。そして、この勾配を色相軸の値0〜20の代わりにカラーバーとして視覚化します。 基本的には、カラーバーのデータとしてall_hues(グラディエントを下に掲載)を設定して表示し、カラーバーを色相軸のティックの位置に移動するにはどうすればいいですか?

Hue Gradient

現在のコード:

fig_synth = plt.figure("synth") 
plt.imshow(synth_avrgHistogram, interpolation='nearest', vmin=0, vmax=vmax) 
plt.colorbar() 
plt.xlabel("Saturation") 
plt.ylabel("Hue") 
+0

y軸の希望する結果の画像を表示できますか?それは私には本当に明確ではありません... – Silmathoron

+0

サンプルデータを提供できますか?私はあなたが 'y軸'を対数目盛にプロットすることを提案します。 – MaThMaX

+0

@Silmathoron私は説明を編集しました。私の問題を明確にすることを願っています。 – maxkra

答えて

1

[OK]を、私は正確にこれを行う方法がわからない...私は考えることができる最も近いものは、これらのmatplotlibの例からAxesGridを使用することです: cmapおよびedge cbar

import matplotlib.pyplot as plt 
from mpl_toolkits.axes_grid1 import AxesGrid 
import numpy as np 

def demo_right_cbar(fig): 
    """ 
    A grid of 2x1 images. Left will be the colorbar, right the image. 
    """ 
    grid = AxesGrid(fig, 121, # similar to subplot(122) 
        nrows_ncols=(1,2), 
        axes_pad=0.05, 
        cbar_location="right", 
        cbar_mode="edge", 
        cbar_size="7%", 
        cbar_pad="2%", 
        ) 
    extent = (0,200,0,200) 
    Z = np.random.randint(0,200,(extent[1],extent[3])) 
    gradient = np.linspace(0, 20, 100) 
    gradient = np.vstack((gradient, gradient)).T 
    grid[0].imshow(gradient, aspect=100./7., extent=extent) 
    grid[1].set_ylabel("Hue") 
    grid[0].set_xticks([]) 
    grid[0].set_ylabel("Hue") 

    im = grid[1].imshow(Z, extent=extent, interpolation="nearest", cmap=plt.get_cmap("summer")) 
    grid[1].set_xlabel("Saturation") 
    print(dir(grid[0])) 
    cax = grid.cbar_axes[0] 
    cax.colorbar(im) 
    cax.toggle_label(True) 
    cax.axis[cax.orientation].set_label('Foo') 

fig = plt.figure() 
demo_right_cbar(fig) 

plt.show() 

これは私ができる最善の方法です。左の「カラーバー」に必要な色をプロットする方法を見つける必要があります。

+0

ありがとう@Silmathoron。それは私が探していたものでした。それはハックのようですが、私の問題に完全に合っています! – maxkra

関連する問題