1

現在、ユーザーがデータセットをカラーマップの形式で表示し、スライダーを使用して、ユーザーがカラーマップのしきい値を調整し、それに応じてカラーマップを更新できるようにするプログラムに取り組もうとしています。 . これを説明する最良の方法は、写真を使用することです。 ここに画像の説明を入力

この画像は、調整前 (左側の画像) と調整後 (右側の画像) でカラーバーがどのように見えるかを示しています。コロバーのしきい値が変更されると、それに応じてカラーマップが更新されます。

現在、私は主にmatplotlibを使用していますが、matplotlibがスライダーなどのいくつかのウィジェットをサポートしていることがわかりました。ただし、私が助けを必要としている領域は、スライダーが調整されたときにカラーバーとカラーマップを更新するコードを考案することです (上の図に示されている方法のように)。誰かが以前にこれを行ったことがあり、喜んで共有できるコードを持っている可能性があり、これをどのように達成できるかについての指針があるかどうか疑問に思っていました.

4

1 に答える 1

1

これで 80% は達成できるはずです:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button

ax = plt.subplot(111)
plt.subplots_adjust(left=0.25, bottom=0.25)
img_data = np.random.rand(50,50)
c_min = 0
c_max = 1

img = ax.imshow(img_data, interpolation='nearest')
cb = plt.colorbar(img)
axcolor = 'lightgoldenrodyellow'


ax_cmin = plt.axes([0.25, 0.1, 0.65, 0.03])
ax_cmax  = plt.axes([0.25, 0.15, 0.65, 0.03])

s_cmin = Slider(ax_cmin, 'min', 0, 1, valinit=c_min)
s_cmax = Slider(ax_cmax, 'max', 0, 1, valinit=c_max)

def update(val, s=None):
    _cmin = s_cmin.val
    _cmax = s_cmax.val
    img.set_clim([_cmin, _cmax])
    plt.draw()

s_cmin.on_changed(update)
s_cmax.on_changed(update)

resetax = plt.axes([0.8, 0.025, 0.1, 0.04])
button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975')
def reset(event):
    s_cmin.reset()
    s_cmax.reset()
button.on_clicked(reset)

plt.show()

これは、公式デモの最小限の編集バージョンです。

于 2013-04-07T04:57:19.660 に答える