2017-01-27 4 views
1

グリッドセルごとに異なる色の四角形のグリッドを表示したい場合は、imagescという簡単な呼び出しでhereのようなコマンドでMATLABを呼び出すことができます。私はこのようなグリッドの異なるセルを色付けしたい場合はどうimagescは矩形以外のグリッドを持つフィーチャが好き[MATLAB]

enter image description here

はPythonやMatlabのどちらかでデフォルトで利用できるこの機能ですか?私は非常に小さな正方形のセルでこのグリッドを離散化しようとしました。そして各セルに色をつけます。それは動作します。しかし、それは普通のようです。彼の仕事をよりスマートにする方法はありますか?

+0

あなた自身のカスタム 'patch'オブジェクトを作成する必要があります – Suever

+0

私は簡単にそれを行うことを学ぶことができますどのWebサイト? –

答えて

0

pythonにはaxesの組み込みpolar投影があります。このプロジェクションでは、ほとんどすべてのプロット方法を極座標で自動的に使用できます。これはあなたが望むものはほとんどです。この

default polar pcolor behavior

のようなプロットを生成することを

import numpy as np 
from matplotlib import pyplot as plt 

r = np.linspace(0,4,5) 
theta = np.linspace(0,2*np.pi,10) 
theta,r = np.meshgrid(theta,r) 
values = np.random.rand(*(theta.shape)) 

ax = plt.subplot(111,polar=True) 
ax.pcolor(theta,r,values) 
plt.show() 

注意が次のように具体的には、あなたがpcolorまたはpcolormeshする必要があります。明らかな問題は、パッチの頂点が円弧に続く線ではなく直線で結ばれることです。これは、角度配列をより高密度にすることで解決できます。ここにそれを可能にする方法があります。

improved pcolor

を生成する

import numpy as np 
from matplotlib import pyplot as plt 

r = np.linspace(0,4,5) 
theta = np.linspace(0,2*np.pi,10) 

values = np.random.rand(r.size,theta.size) 

dense_theta = np.linspace(0,2*np.pi,100) 
v_indeces = np.zeros_like(dense_theta,dtype=np.int) 
i = -1 
for j,dt in enumerate(dense_theta): 
    if dt>=theta[i+1]: 
     i+=1 
    v_indeces[j] = i 

T,R = np.meshgrid(dense_theta,r) 

dense_values = np.zeros_like(T) 

for i,v in enumerate(values): 
    for j,ind in enumerate(v_indeces): 
     dense_values[i,j] = v[ind] 

ax = plt.subplot(111,polar=True) 
ax.pcolor(T,R,dense_values) 
plt.show() 

私はMathWorks社のMATLABでこれを行う方法を認識していないが、私の周りGoogleで検索して、それは極座標でpcolorプロットを生成することができます言うthisを見つけました。あなたはそれをチェックアウトする必要があります。

関連する問題