2017-03-04 6 views
0

これは私の考えのイラストです。 3つの属性を1つの図にプロットする。半分の長さの軸を設定する方法

以下のスタイルのような軸システムを設定したいと思います。上の軸は0〜1の範囲です。下の軸は-1〜1の範囲です。

これを達成する方法はありますか?

+------+    ---+ 
|  |   
|  | ---> 
|  |   
+------+   +------- 
+0

私はアスキー画像が必要な情報を伝えるために単純すぎると思います。より多くの情報、または達成しようとしているもののより良いイメージを追加できますか?また、これを達成するためにどこに問題があるのか​​を知ることは役に立ちます。 – ImportanceOfBeingErnest

答えて

1

2つの軸を重ねて配置することができます。一方の軸は他方の幅の半分の位置に配置できます。その後、軸のスパインを不可視に設定し、軸の限界を調整すると、問題のものと同様のプロットが生成されます。

enter image description here

import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure(figsize=(6,3)) 
ax1 = fig.add_axes([0.1,0.1, 0.35,0.8]) 
ax2 = fig.add_axes([0.55,0.1, 0.35,0.8]) 
ax3 = fig.add_axes([0.55+0.175,0.1, 0.175,0.8], facecolor=(0,0,0,0)) 
ax3.xaxis.tick_top() 
ax2.set_xlim([-1,1]) 
ax3.set_xlim([0,1]) 

ax2.spines['right'].set_color('none') 
ax3.spines['right'].set_color('none') 
ax2.spines['left'].set_color('none') 
ax3.spines['left'].set_color('none') 
ax2.spines['top'].set_color('none') 
ax3.spines['bottom'].set_color('none') 
ax2.set_yticks([]) 
ax3.set_yticks([]) 


x = np.linspace(-1,1,201) 
f = lambda x,b: np.sin(x/b) 
f2 = lambda x,a,b: ((x/b-a)*np.exp(-(x/b-a)**2))**2 

ax1.plot(x, f(x,0.5)*f2(x,1,0.5), color="C3") 
ax2.plot(x,f2(x, -1.8,0.5), color="C1") 
ax3.plot(x,f(x,0.1), color="C2") 

ax3.set_ylim([-3,1.5]) 

plt.show() 
関連する問題