没有共享轴的叠加图:左下角与右上角对(python / matplotlib)

时间:2014-02-06 21:59:35

标签: python matplotlib

在Python / Matplotlib中,如何在不共享任何轴的同一图表上有两个图?即,第一个图使用左轴和下轴,第二个图使用顶轴和右轴。每对轴都是独立的,可用于独立绘制多条曲线,但在同一图表上。 例如,这通常用于主成分分析的双标图。

据我所知,我的解决方案不是通过twinxtwiny,我无法找到host_suplot的解决方案......而且我的研究引导我使用共享轴的解决方案,但没有解决这种特殊情况。 谢谢。

1 个答案:

答案 0 :(得分:2)

不是很优雅,但它有效。

import numpy as np
import matplotlib.pyplot as plt

x1 = np.arange(10)
y1 = x1**2
x2 = np.arange(100,200)
y2 = x2

fig = plt.figure()

ax1 = fig.add_axes([0.1, 0.1, 0.8, 0.8], label="ax1")
ax2 = fig.add_axes([0.1, 0.1, 0.8, 0.8], label="ax2", frameon=False)

ax1.yaxis.tick_left()
ax1.xaxis.tick_bottom()


ax2.yaxis.tick_right()
ax2.yaxis.set_label_position('right')
ax2.yaxis.set_offset_position('right')
ax2.xaxis.tick_top()
ax2.xaxis.set_label_position('top')

ax1.spines['right'].set_color('red')
ax1.spines['top'].set_color('red')

for ylabel, xlabel in zip(ax2.get_yticklabels(), ax2.get_xticklabels()):
     ylabel.set_color("red")
     xlabel.set_color("red")


ax1.plot(x1,y1)
ax2.plot(x2,y2, 'r')

plt.show()

enter image description here