所以我找到了一个解决方法,但它有点软糖。 This is what it looks like.
代码如下:
fig, ax = plt.subplots()
fig.canvas.set_window_title("Frame-to-frame pump-to-probe")
plt.xlabel(r'$t/ps$')
plt.ylabel(r'%')
min = 0
for i in range(len(ftf_PtmPlist)):
if ftf_PtmPlist[i] < min:
min = ftf_PtmPlist[i]
if ftf_PtmPlist[i] < 0:
ftf_PtmPlist[i] = 2*ftf_PtmPlist[i]/10.0
for i in range(len(ftf_PttPlist)):
if ftf_PttPlist[i] < min:
min = ftf_PttPlist[i]
if ftf_PttPlist[i] < 0:
ftf_PttPlist[i] = 2*ftf_PttPlist[i]/10.0
lables = [0,20,40,60,80,100]
ymin = int(20*math.floor(min/100.0))
for y in range(ymin,-19,20):
lables.append(y)
lables = sorted(lables)
for i in range(-ymin/20):
lables[i] = str(int(lables[i]*10/2.0))
ax.set_yticklabels(lables)
plt.plot(timelist,ftf_PtmPlist,'magenta', label='pump to main probe efficiency')
plt.plot(timelist,ftf_PttPlist,'teal', label='pump to total probe efficiency')
plt.plot(timelist,p_deplist,'orange', label='pump energy depletion')
plt.gca().set_ylim(top=105)
plt.gca().set_xlim(left=-1.0)
plt.legend(bbox_to_anchor=(0.55, 0.17), loc=2, borderaxespad=0., prop={'size':10})
首先,我将两个列表的所有小于 0 的值缩放 0.2 倍,这两个列表有可能出现负值,同时寻找总体上最负的值。然后我使用这个值来找到最负的刻度标签应该是什么(给定我正在使用的缩放比例)并创建一个新的刻度标签列表,以便负值显示为它们在我缩小它们之前的值。
我知道这有点草率,但确实可以!