用非线性比例绘制第二个x轴

时间:2019-09-29 17:22:42

标签: python matplotlib

我想绘制第二个x轴,但在我的情况下,在第二个x轴上绘制的数量来自第一个x轴上的数量,并具有非线性变换。我有以下代码:

import numpy as np

import matplotlib.pyplot as plt

c=299792458
lL=1064*10**(-9) # m
omL = 2.0*np.pi*c/lL # 1/s

n=2.0


delp = 2.0*np.pi
dela = np.linspace(0.0, delp/n, 300)

d  = delp/(omL/c)/n #m
ka = dela/d #1/m
ma = np.sqrt((omL/c)**2-ka**2) #1/m
maEV= ma* 197*10**(-9) #eV

BL = dela/delp 


fig = plt.figure(1)
ax1 = fig.add_subplot(111)
ax2 = ax1.twiny()

ax1.set_xlabel(r'$ x$', fontsize=18)
ax1.set_ylabel(r'$y$', fontsize=18)
ax1.plot(maEV,np.absolute(BL),label=r'$j$')

plt.title(r"n="+str(n),fontsize=16) 
plt.tight_layout()

lab = [0,1,2,3]
squad = [str(delp/n/np.pi),'0']

ax2.set_xticks(lab)
ax2.set_xticklabels(squad, minor=False)

ax2.set_xlabel(r"$\delta_a[\pi]$")

plt.legend()

plt.savefig("test.pdf")

什么给出以下输出

Figure

问题在于,下部x轴上的“ 0”应属于上部x轴上的“ 1.0”。但这显然不是事实……我该如何改变这一点并系统地产生上x轴的刻度?

0 个答案:

没有答案