等高線を描きたい(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軸は描画したくない。軸上の数字もいらない。それらを消す方法。
  • 図に任意の文字列を描きこむ方法。
  • 色で値の大小を表現したいので、とりあえずは使用できる色を調べる。