2013-10-16 6 views
5

मैं दो भूखंडों के एक्स-अक्ष को संरेखित करना चाहता हूं, बशर्ते एक imshow साजिश है।matplotlib में लंबवत दो भूखंडों को संरेखित करें बशर्ते एक एक इम्शो प्लॉट है?

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.gridspec as grd 

v1 = np.random.rand(50,150) 
v2 = np.random.rand(150) 

fig = plt.figure() 

gs = grd.GridSpec(2,1,height_ratios=[1,10],wspace=0) 


ax = plt.subplot(gs[1]) 
p = ax.imshow(v1,interpolation='nearest') 
cb = plt.colorbar(p,shrink=0.5) 
plt.xlabel('Day') 
plt.ylabel('Depth') 
cb.set_label('RWU') 
plt.xlim(1,140) 

#Plot 2 
ax2 = plt.subplot(gs[0]) 
ax2.spines['right'].set_visible(False) 
ax2.spines['top'].set_visible(False) 
ax2.xaxis.set_ticks_position('bottom') 
ax2.yaxis.set_ticks_position('left') 
x=np.arange(1,151,1) 
ax2.plot(x,v2,'k',lw=0.5) 
plt.xlim(1,140) 
plt.ylim(0,1.1) 
# 
plt.savefig("ex.pdf", bbox_inches='tight') 

मैं भी एक दूसरे के लिए अधिक से अधिक निकट और एक 1/10 अन्य की ऊंचाई भूखंडों हैं:

मैं के रूप में यह इस प्रकार है gridspec उपयोग करने के लिए कोशिश की है। अगर मैं कलरबार लेता हूं, तो वे गठबंधन लगते हैं लेकिन फिर भी मैं उन्हें एक-दूसरे के करीब नहीं रख सकता। मैं भी रंगीन रंग चाहता हूँ।

उत्तर

12

छवि अंतरिक्ष को भर नहीं रही है क्योंकि आंकड़े का पहलू अनुपात धुरी से अलग है। एक विकल्प आपकी छवि के पहलू अनुपात को बदलना है। आप छवि और रेखा ग्राफ को दो से दो ग्रिड का उपयोग करके गठबंधन कर सकते हैं और कलर बार को अपनी धुरी में डाल सकते हैं।

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.gridspec as grd 

v1 = np.random.rand(50,150) 
v2 = np.random.rand(150) 

fig = plt.figure() 

# create a 2 X 2 grid 
gs = grd.GridSpec(2, 2, height_ratios=[1,10], width_ratios=[6,1], wspace=0.1) 

# image plot 
ax = plt.subplot(gs[2]) 
p = ax.imshow(v1,interpolation='nearest',aspect='auto') # set the aspect ratio to auto to fill the space. 
plt.xlabel('Day') 
plt.ylabel('Depth') 
plt.xlim(1,140) 

# color bar in it's own axis 
colorAx = plt.subplot(gs[3]) 
cb = plt.colorbar(p, cax = colorAx) 
cb.set_label('RWU') 

# line plot 
ax2 = plt.subplot(gs[0]) 

ax2.spines['right'].set_visible(False) 
ax2.spines['top'].set_visible(False) 
ax2.xaxis.set_ticks_position('bottom') 
ax2.yaxis.set_ticks_position('left') 
ax2.set_yticks([0,1]) 
x=np.arange(1,151,1) 
ax2.plot(x,v2,'k',lw=0.5) 
plt.xlim(1,140) 
plt.ylim(0,1.1) 

plt.show() 

aligned image and line plot withe color bar

+0

आप @Molly धन्यवाद,। अब मैं समझ सकता हूं कि इसका प्रबंधन कैसे करें और साजिश के अन्य पैरामीटर कैसे बदलें। –

संबंधित मुद्दे