我一直在使用一段代码(基于此处给出的另一个问题的解决方案)来创建具有两个x轴的光谱数据图.第一个(底部)是频率单位,第二个(顶部)只是转换为波长单位(波长= 3E8 /频率).这很有效,直到我将MPL升级到1.4.2,之后上轴的值与下轴上的值相同(参见示例).
MWE(来自MPL邮件列表的精确副本)是:
from matplotlib.transforms import Transform, BlendedGenericTransform, IdentityTransform
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
import numpy as np
c = 3.e2
class Freq2WavelengthTransform(Transform):
input_dims = 1
output_dims = 1
is_separable = False
has_inverse = True
def transform(self, tr):
return c/tr
def inverted(self):
return Wavelength2FreqTransform()
class Wavelength2FreqTransform(Freq2WavelengthTransform):
def inverted(self):
return Freq2WavelengthTransform()
aux_trans = BlendedGenericTransform(Freq2WavelengthTransform(),
IdentityTransform())
fig = plt.figure(2)
ax_GHz = SubplotHost(fig, 1,1,1)
fig.add_subplot(ax_GHz)
ax_GHz.set_xlabel("Frequency (GHz)")
xvals = np.arange(199.9, 999.9, 0.1)
#make some test data
data …Run Code Online (Sandbox Code Playgroud)