等高線を描きたい(3)領域を囲んで色付ける
領域の色分けが写真のようにできた。Matplotlibでプロットする部分はクラスとして実装した。下にコードの一部を示す。やっていることとしては、
- 描いた図をFrame上で表示させている。
- 色は8色を使っている。
- 境界線は複数の点をつなぐことで描画している。Util.cordx、Util.cordyはリストのリスト。点の座標を入れてある。
""" PlotC.py """ import wx import Util from pylab import * class PlotContour(wx.Frame): def __init__(self, parent, iflag): wx.Frame.__init__(self, parent, title="2D Contour plot", size=(600,620)) self.pnl = wx.Panel(self) self.iflag = iflag color = 'r' fig = figure() ax = fig.add_subplot(111) for i in range(Util.sens_num_ini): if i%8 == 0: #ここらへんはエレガントでないな。 color='b' elif i%8 == 1: color='g' elif i%8 == 2: color='r' elif i%8 == 3: color='c' elif i%8 == 4: color='m' elif i%8 == 5: color='y' elif i%8 == 6: color='b' elif i%8 == 7: color='w' x = Util.cordx[i] y = Util.cordy[i] ax.fill(x, y, color) # ax.autoscale_view() # fig.autofmt_xdate() fig.savefig('tempfig') Bimag = wx.Image('tempfig.png') Bscal = Bimag.Scale(600,600) # self.StBmap = wx.StaticBitmap(self.pnl, -1, Bimag.ConvertToBitmap(), # (10,10)) self.StBmap = wx.StaticBitmap(self.pnl, -1, Bscal.ConvertToBitmap(), (0,0))
さらに確認する点としては、
- x,y軸は描画したくない。軸上の数字もいらない。それらを消す方法。
- 図に任意の文字列を描きこむ方法。
- 色で値の大小を表現したいので、とりあえずは使用できる色を調べる。