2017-05-17 13 views

答えて

0

これはハックのようなものですが、これらの位置で等高線プロットを隠すために、黒い境界矩形のサイズで白い四角形を描くことができると思います。

1

コンタープロットの上にpcolormeshを使用して、その下の領域を非表示にすることができます。

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(-120.,120.,13) 
X,Y = np.meshgrid(x,x) 

Z = X*np.sqrt(np.abs(Y))*np.exp(-(X**2+Y**2)/3000.) 
Xf = X.flatten() 
Yf = Y.flatten() 
Zf = Z.flatten() 
cond = Xf**2+Yf**2 < 105**2 
Xf = Xf[cond] 
Yf = Yf[cond] 
Zf = Zf[cond] 

cond2 = X**2+Y**2 < 105**2 
mask = np.zeros_like(X) 
mask = np.ma.masked_array(mask,mask=cond2) 

fig, ax = plt.subplots() 
ax.tricontourf(Xf,Yf,Zf, levels=np.linspace(Z.min(), Z.max(), 10)) 

dx=np.diff(X[0,:])[0]; dy=np.diff(Y[:,0])[0] 
ax.pcolormesh(X,Y,mask, zorder=2, cmap="gray", vmin=-1) 
ax.pcolormesh(X-dx,Y-dy,mask, zorder=2, cmap="gray", vmin=-1) 
ax.pcolormesh(X,Y-dy,mask, zorder=2, cmap="gray", vmin=-1) 
ax.pcolormesh(X-dx,Y,mask, zorder=2, cmap="gray", vmin=-1) 

ax.scatter(Xf,Yf, c="k", s=5, zorder=3) 
plt.show() 

enter image description here

+0

これはクールだと仕事ができます。私はそれを撃つだろう。イメージには、領域を区切るドットがあります。私は私の例の四角形のような線でそれらを置き換えることができますか? –

+0

散布図よりも線を生成するのが少し複雑です。そのためにドットを使用しました。もちろん、あなたが好きなら、そこにラインをプロットすることもできます。 – ImportanceOfBeingErnest

関連する問題