帶局部放大的多個子圖
"""
Created on Thu Oct 31 21:17:45 2019
@author: huang
"""
import xlrd
import numpy as np
import math
import matplotlib.pyplot as plt
from matplotlib.patches import ConnectionPatch
from matplotlib.font_manager import FontProperties
def Draw(Path1, Path2):
fontdict1={'family':'Times New Roman',
'weight':'normal',
'size':10,
}
dst_all,xlength = DistArr(Path1, Path2)
Criterion = 3000
Percent = 0.001
ty1 = 15000
startid = 900
plt.figure(num=1, figsize=(12, 5))
p1 = plt.subplot(1, 2, 1)
x=range(0,xlength,1)
y=dst_all[0:xlength]
yMax = max(y)
plt.plot(x,y)
plt.xlabel('xxx',fontdict1)
plt.ylabel('xxx',fontdict1)
plt.axhline(Criterion,ls='--',color='black')
plt.axis([0,xlength,0,yMax])
p2 = plt.subplot(1, 2, 2)
x=range(startid,xlength,1)
y=dst_all[startid:xlength]
plt.plot(x,y)
plt.xlabel('xxx',fontdict1)
plt.ylabel('xxx',fontdict1)
plt.axhline(Criterion,ls='--',color='black')
plt.axis([startid,xlength,0,yMax])
tx0 = 0
if Percent>0.05:
tx1 = int(xlength*Percent)
else:
tx1 = int(xlength*0.06)
ty0 = 0
sx = [tx0,tx1,tx1,tx0,tx0]
sy = [ty0,ty0,ty1,ty1,ty0]
p1.plot(sx,sy,"red")
xy2 = (10, yMax)
xy1 = (tx1, ty1)
con = ConnectionPatch(xyA=xy2,xyB=xy1,coordsA="data",coordsB="data",
axesA=p2,axesB=p1)
p1.add_artist(con)
xy2 = (startid, 0)
xy1 = (tx1, ty0)
con = ConnectionPatch(xyA=xy2,xyB=xy1,coordsA="data",coordsB="data",
axesA=p2,axesB=p1)
p1.add_artist(con)
Path1 = 'xxx'
Path2 = 'xxx'
Draw(Path1, Path2)