matplotlibの覚え書き(他のやりかたが分かれば随時更新。。。)
もくじ
もくじ
・散布図の上に密度コントアを描きたい
scatter(x,y,marker='o',s=10.,c='c',alpha=0.4) # 散布図
x_range = arange(0.0,3.1,0.1) # x軸メッシュの(min, max, bin) y_range = arange(-3.0,0.1,0.1) # y軸メッシュの(min, max, bin) his, xhis, yhis = histogram2d(x, y, bins=(31,31), range=((0.0,3.0),(-3.0,0.0))) # binsはメッシュの数。range と bins は arange と合わせる xx, yy = meshgrid(x_range,y_range) # xx, yyに、x, yを2次元に変換した配列を代入。 ちなみにx, yは1次元の配列 con = contour(xx, yy, his.transpose(), 4, linewidths=1.5, colors='black') # コントアをひく。transpose( ) は転置 plotの中にデータ点の2Dヒストグラムを作り、ヒストグラムの値をもとにコントアにしている plotをメッシュで区切るためのパラメータは arange( ) で設定 2Dヒストグラムのパラメータは histogram2d( ) で設定 コントア作画時のパラメーターは、contour(x, y, 2Dヒストグラム(x, y)に位置するbin内の点数, コントア数) 図1と2の違いは、arange の bin のサイズ。上は0.05、下は0.1にした場合。 コントア内を塗りたい場合は次の方法があるらしい 1) contourf(xx, yy, his.transpose(), 4, linewidths=1.5, # コントア内の色付け colors=('w','b','g','yellow','r'), alpha=0.5) 2) pcolor(xx, yy, his.transpose(), shading='flat') # bin毎に色付け colorbar() cool() 1) 色の指定は、colors=('背景色', 'lower level', ..., 'higher level') となっている 2) カラーバーを表示させたい際は colorbar() とする。cool() は色の種類(参照) 図3左・右がそれぞれ、1)・2)に対応している。 |
・水平方向に複数のbarを描きたい
broken_barh([ (85, 20), (215, 55) ], (2,3), facecolors=('yellow','green')) # 水平barを描く基本形
broken_barh([ (80, 36), (129, 45), (201, 66) ] , (7,3), facecolors=('yellow','#8b4513','green'), line'dashed', linewidth=6.) # barの外枠の線種を変えて太くした場合 broken_barh([ (180, 70), (266, 89), (320, 100), (600, 100)] , (12,3), facecolors=('#00ff00','#5f9ea0','cyan','#87ceeb'), edgecolor='red') # barの外枠の線の色を変えた場合 broken_barh が水平方向のbarを描く関数(ていうの?) 中のパラメーターは、((bar x_value, bar x_width), (y_value, y_width)) が基本 facecolors はbarそのものの色を指定 edgecolor、linestyle、linewidth はbar外縁部の色、種類、太さを指定 図では下から順に上の描き方に対応している。 |