2015-09-06 170 views
1

我有這樣的代碼如何使matplotlib mark_inset顯示行顯示在圖形頂部?

ax = plt.subplot(222) 
plt.plot(time_list, data[1], color='red') 
plt.plot(time_list, y_offset, color='blue') 
plt.axvline(x=0, color='black') 
plt.axhline(y=0, color='black') 

axins = zoomed_inset_axes(ax, 4.5, loc=4) 
axins.plot(time_list, data[1], color='red') 
axins.plot(time_list, y_offset, color='blue') 
axins.axvline(x=0, color='black') 
axins.axhline(y=0, color='black') 
axins.axis([2, 3, -0.01, 0.01]) 
plt.yticks(visible=False) 
plt.xticks(visible=False) 
mark_inset(ax, axins, loc1=3, loc2=1, fc="none", ec="0.0") 

其情節圖這樣

enter image description here

,你可以看到縮放框線是紅色的陰謀的幕後,但鏈接線在頂部那麼如何使縮放框線成爲劇情的頂部?

+0

你試過之後你所有的'plot'通話的主叫'zoomed_inset_axes'? – farenorth

+0

@ n orth I I I calling calling calling pl pl pl pl pl pl pl pl pl pl pl pl pl pl pl pl pl pl pl pl plt.show() - > result – SaintTail

回答

2

通過使用Z-order,可以使框出現在圖線上。具有較高Z順序的藝術家被繪製在具有較低Z順序的藝術家之上。行的默認值爲2,因此請將zorder = 3添加到mark_inset

全碼:

from matplotlib import pyplot as plt 
import numpy as np 
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes, mark_inset 
fig, ax = plt.subplots() 
time_list = np.linspace(0, 7, 1000) 
data = np.random.random(1000) - .5 
plt.plot(time_list, data, color='red') 

plt.axvline(x=0, color='black') 
plt.axhline(y=0, color='black') 

axins = zoomed_inset_axes(ax, 4.5, loc=4) 
axins.plot(time_list, data, color='red') 
axins.axvline(x=0, color='black') 
axins.axhline(y=0, color='black') 
axins.axis([2, 3, -0.01, 0.01]) 
plt.yticks(visible=False) 
plt.xticks(visible=False) 
mark_inset(ax, axins, loc1=3, loc2=1, fc="none", ec="0.0", zorder = 3) 
plt.show() 

Graph with mark_inset box above plotted line