tag:crieit.net,2005:https://crieit.net/tags/matplotlib/feed
「matplotlib」の記事 - Crieit
Crieitでタグ「matplotlib」に投稿された最近の記事
2021-01-25T03:06:35+09:00
https://crieit.net/tags/matplotlib/feed
tag:crieit.net,2005:PublicArticle/16648
2021-01-25T03:06:35+09:00
2021-01-25T03:06:35+09:00
https://crieit.net/posts/Python-95
Pythonで95パーセンタイル区間を色塗り
<h1 id="95パーセンタイル(95 percentile)を色塗り"><a href="#95%E3%83%91%E3%83%BC%E3%82%BB%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%AB%2895+percentile%29%E3%82%92%E8%89%B2%E5%A1%97%E3%82%8A">95パーセンタイル(95 percentile)を色塗り</a></h1>
<pre><code class="python">up=np.zeros(141) #塗りつぶす範囲の上縁
down=np.zeros(141) #塗りつぶす範囲の下縁
for i in range(141):
b=loss_all[((parameters[:,0]-i/10-0.5)*(parameters[:,0]-i/10-1) <= 0)]
up[i]=np.percentile(b,q=[2.5,97.5])[1]
down[i]=np.percentile(b,q=[2.5,97.5])[0]
plt.figure(figsize=(6, 6), dpi=150)
plt.tick_params(labelsize=15)
plt.scatter(parameters[:,0],loss_all,s=10, alpha=0.3)
plt.fill_between(np.arange(141)/10+0.5,up,down,color='red',alpha=0.4)
plt.xlabel('Hs1[m]')
plt.ylabel('Test absolute error of sea state parameters')
#plt.ylim(-2,2)
plt.grid()
plt.show()
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/c45e68ad33678bfa3b123e2fc7345bd3600db6b05015d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c45e68ad33678bfa3b123e2fc7345bd3600db6b05015d.png?mw=700" alt="image" /></a></p>
kawai_mizugorou
tag:crieit.net,2005:PublicArticle/16632
2021-01-19T15:49:02+09:00
2021-01-19T15:49:02+09:00
https://crieit.net/posts/Contour-maps-in-polar-coordinate
極座標で等高線図を作成(Contour maps in polar coordinate)
<h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1>
<p> Pythonで極座標形式の等高線図を描く方法を紹介します.<a target="_blank" rel="nofollow noopener" href="https://matplotlib.org/api/_as_gen/matplotlib.pyplot.contour.html">matplotlibの公式ドキュメント</a>を参考にしたので,詳しくはそちらをご覧ください.</p>
<p> 本記事では,描き方の使用例として海の波の様子を表示させます.従って,変数は波の高さ・周波数・波向きの3つです.極座標形式の等高線図の周方向が波向きを,中心からの距離が周波数を,等高線の色が波高さを示します.</p>
<h1 id="本編"><a href="#%E6%9C%AC%E7%B7%A8">本編</a></h1>
<h2 id="準備"><a href="#%E6%BA%96%E5%82%99">準備</a></h2>
<p>まずはモジュールのインポート</p>
<pre><code class="python">import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
</code></pre>
<p>続いては表示させたいデータをインポート.<br />
本記事では,あらかじめ用意したcsvファイルを読み込みました.ファイルは25行36列のデータです.行は周波数を表し,列は波向きです.</p>
<pre><code class="python">a = pd.read_csv("GA.csv",engine='python',header=None,skiprows=0)
GA =a.values
</code></pre>
<h2 id="極座標等高線図の作成"><a href="#%E6%A5%B5%E5%BA%A7%E6%A8%99%E7%AD%89%E9%AB%98%E7%B7%9A%E5%9B%B3%E3%81%AE%E4%BD%9C%E6%88%90">極座標等高線図の作成</a></h2>
<p>まずは,周方向と中心からの距離の軸を設定します.</p>
<p>ここで注意したいのが,インポートしたデータの波向きは,0°~350°([0,10,20, ,,, ,340,350])の36列です.しかし,極座標表示させたい場合は,0°~360°([0,10,20, ,,, ,350,360])の37列にする必要があります.</p>
<pre><code class="python">#周方向(波向き[rad])のリスト作成
theta = 2 * np.pi/360*np.arange(0, 370, 10)
#中心からの距離(波周波数[rad/s])のリスト作成
freq=2*np.pi*np.array([0.0445953, 0.0486315, 0.053033, 0.0578329, 0.0630672, 0.0687753, 0.075, 0.0817881, 0.0891906, 0.097263, 0.106066, 0.1156658, 0.1261345, 0.1375506, 0.15, 0.1635762, 0.1783811, 0.194526, 0.2121321,0.2313317, 0.252269, 0.2751013, 0.3000001, 0.3271524, 0.3567623])
X, Y = np.meshgrid(theta, freq)
#25行37列の2次元リストを作成 ※360°は0°の値を読み込んでいる事に注意
wavedata=[[float(GA[i,int((j)%36)])for j in range(37)] for i in range(25)]
</code></pre>
<p>いよいよ描画.<br />
表示させたい2次元データは最大値が4.8なので,np.linspace(0.00, 5.00, 501)のmaxを5にして,同じようにvmax=5としています.<br />
cmapはカラーマップです.色を変えたい場合は<a target="_blank" rel="nofollow noopener" href="https://matplotlib.org/3.2.1/tutorials/colors/colormaps.html">matplotlibの色サンプル</a>をご覧ください.</p>
<pre><code class="python">v = np.linspace(0.00, 5.00, 501)
ctf=ax2.contour(X, Y, wavedata,levels=v,cmap=cm.jet,linewidths=0.5,vmax=5)
plt.colorbar(ctf, pad=0.1,orientation="vertical")#カラーバーを横にしたければorientation="horizontal"
ax2.set_theta_zero_location("S")#0°の方角.北はN,南はS,西はW,東はE
ax2.set_theta_direction(1)#時計回りの場合は-1,反時計周りの場合は1
ax2.set_rlabel_position(60)#距離の軸の位置.単位はdeg.
plt.show()
</code></pre>
<p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649674/822da380-32ae-7b05-b36d-569e21cac29e.png" alt="image.png" /></p>
<p>以上になります.お疲れさまでした.<br />
誤りの指摘や質問等がありましたら,お手数ですがコメントください.<br />
よろしくお願いします.</p>
kawai_mizugorou
tag:crieit.net,2005:PublicArticle/16620
2021-01-19T03:06:48+09:00
2021-01-19T03:06:48+09:00
https://crieit.net/posts/f00c3157c7e766549834c6aa17923099
散布図へ色を付ける方法
<pre><code class="python">import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
x=(np.array([np.arange(0, 2.11,0.03 )]*len(index))).flatten()
y=GA[index,19:19+71].flatten()
xy=np.vstack([x,y])
z=gaussian_kde(xy)(xy)
plt.figure(figsize=(5, 3), dpi=100)
plt.title('Pitch')
plt.scatter(x,y,c=z,s=10)
plt.grid(True)
plt.ylim(0,0.1)
plt.xlabel(" [rad/s]")
plt.ylabel("[deg^2/s]")
plt.show()
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/74eb05fa85abc8cad6d1fab5078931006005ce34415d9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/74eb05fa85abc8cad6d1fab5078931006005ce34415d9.png?mw=700" alt="image" /></a></p>
kawai_mizugorou
tag:crieit.net,2005:PublicArticle/16619
2021-01-19T03:00:41+09:00
2021-01-27T04:23:37+09:00
https://crieit.net/posts/boxplot
箱ひげ図(boxplot)の描き方
<p>箱ひげ図の描き方</p>
<pre><code class="python">import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
sns.set_style('whitegrid')
sns.set_palette('bone')
nums=(np.arange( 0, 2.11,0.03 )*100)/100
Labels=[]
for i in range(len(np.arange( 0, 2.11,0.03 ))):
if i %5 ==0:
Labels.append(int(i*3)/100)
else:
Labels.append('')
fig = plt.figure(figsize=(5,3), dpi=150)
ax = fig.add_subplot(1, 1, 1)
ax.boxplot(GA[index,19:19+71],labels=Labels,showfliers=False)
ax.set_title('Pitch')
ax.set_xlabel('[rad/s]')
ax.set_ylabel('[deg^2/s]')
ax.set_ylim(-0.005, 0.3)
ax.set_xlim(0, 71)
fig.savefig('GA_Pitch_Boxplot.png')
plt.show()
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/4c6d6d98899e414aa516ddadb9f355676006802b6ffab.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4c6d6d98899e414aa516ddadb9f355676006802b6ffab.png?mw=700" alt="image" /></a></p>
kawai_mizugorou
tag:crieit.net,2005:PublicArticle/16618
2021-01-19T02:56:21+09:00
2021-01-19T03:01:08+09:00
https://crieit.net/posts/Ridgeline-plot
Ridgeline plotの描き方
<p>複数の分布をグループorカテゴリ別に重ね合わせて表示する図(Ridgeline plots)の書き方.Joyplotとも言う?</p>
<pre><code class="python">from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
plt.figure(figsize=(4, 6), dpi=150)
def ridgeline(data,overlap=0.5,fill=True,labels=None,n_points=150):
xx=np.linspace(np.min(np.concatenate(data)),np.max(np.concatenate(data)),n_points)
curves=[]
ys=[]
for i,d in enumerate(data):
pdf=gaussian_kde(d)
y=i*(1.0-overlap)
curve=pdf(xx)
if fill:
plt.fill_between(xx,np.ones(n_points)*y,curve+y,zorder=len(data)-i+1,alpha=0.1,color=fill)
plt.plot(xx,curve+y,c='k',zorder=len(data)-i+1)
plt.xlim(-1,1)
#plt.ylim(10,50)
if labels:
plt.yticks(ys,labels)
data=(FFT[index,19+10:19+51]-GA[index,19+10:19+51]).T
print(np.shape(data))
ridgeline(data,overlap=0,fill='blue')
</code></pre>
<p><a href="https://crieit.now.sh/upload_images/22fcdf363a2232af73bed479cb4b582b6005cbbe7e255.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/22fcdf363a2232af73bed479cb4b582b6005cbbe7e255.png?mw=700" alt="image" /></a></p>
kawai_mizugorou
tag:crieit.net,2005:PublicArticle/16418
2020-12-24T02:11:35+09:00
2021-02-01T21:00:27+09:00
https://crieit.net/posts/Matplotlib
Matplotlibの頻繁に使うコード
<p>折れ線グラフや散布図を描くコード</p>
<pre><code class="python">fig=plt.figure(figsize=(8, 6), dpi=150)
#fig=plt.figure(figsize=(4, 4), dpi=150)
plt.scatter(eval_preds[:,0],test_ydata[:,0],s=20, alpha=0.10)
plt.plot(list_train_loss, 'k-', label='Training error',alpha=0.8,color='blue')
plt.ylim(0,0.2)
plt.xlim(0,0.2)
plt.xlabel('Epoch')
plt.ylabel('MSE')
plt.title('Learning curve')
plt.tick_params(labelsize=15)
plt.locator_params(axis='y',nbins=8)
plt.locator_params(axis='x',nbins=8)
plt.gca().yaxis.set_major_formatter(plt.FormatStrFormatter('%.0f'))
plt.gca().xaxis.set_major_formatter(plt.FormatStrFormatter('%.0f'))
plt.legend(['Train','Test'], loc='upper right')
plt.grid()
fig.savefig('画像/結果.png')
plt.show()
</code></pre>
<p>下の画像は上のコードと対応してませんが,参考程度に<br />
<a href="https://crieit.now.sh/upload_images/e85354f3854274e833c09f024fb5d8e65fe37ae699d60.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e85354f3854274e833c09f024fb5d8e65fe37ae699d60.png?mw=700" alt="image" /></a></p>
<p><a href="https://crieit.now.sh/upload_images/c5a917eb692287f0e874b18811319d1d5fe37af784db7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c5a917eb692287f0e874b18811319d1d5fe37af784db7.png?mw=700" alt="image" /></a></p>
kawai_mizugorou