मैं दो एक्स-अक्ष के साथ स्पेक्ट्रोस्कोपिक डेटा के भूखंड बनाने के लिए कोड का एक टुकड़ा (here दिए गए किसी अन्य समस्या के समाधान के आधार पर) का उपयोग कर रहा हूं। पहला (नीचे) आवृत्ति इकाइयों में है, दूसरा (शीर्ष) सिर्फ तरंगदैर्ध्य इकाइयों (तरंग दैर्ध्य = 3E8/आवृत्ति) में परिवर्तित हो गया है। यह तब तक अच्छा काम कर रहा था जब तक मैंने एमपीएल को 1.4.2 तक अपग्रेड नहीं किया जिसके बाद ऊपरी अक्ष पर मान निम्न अक्ष के समान होते हैं (उदाहरण देखें)।ट्रांसप्लेटेड मानों के साथ Matplotlib दूसरा एक्स-अक्ष
एक मेगावाट (एमपीएल मेलिंग सूची से एक सटीक प्रतिलिपि) है:
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 = np.sin(0.03*xvals)
ax_mm = ax_GHz.twin(aux_trans)
ax_mm.set_xlabel('Wavelength (mm)')
ax_mm.set_viewlim_mode("transform")
ax_mm.axis["right"].toggle(ticklabels=False)
ax_GHz.plot(xvals, data)
ax_GHz.set_xlim(200, 1000)
plt.draw()
plt.show()
यह
पैदा करता है किसी भी एक मुझे सलाह कैसे एमपीएल 1.4.2 में यह पता करने के लिए कर सकते हैं?
संभावित डुप्लिकेट [matplotlib में दूसरा x-axis कैसे जोड़ें] (http://stackoverflow.com/q/10514315/2823755)। शायद [स्वीकृत उत्तर] (http://stackoverflow.com/a/10517481/2823755) मदद करेगा। [ '' 'Pyplot.twiny()' ''] (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.twiny) – wwii