2014-02-06 44 views
2

在Python/Matplotlib中,如何在不共享任何軸的同一圖上繪製兩個圖?即第一個曲線圖使用左側和底部軸,第二個曲線圖使用頂部和右側軸。每對軸是獨立的,並且將被用於獨立繪製多條曲線,但是在同一個圖上。例如,這通常用於主成分分析的雙標圖。沒有共享軸的覆蓋圖:左下角與右上角對(python/matplotlib)

據我所知,我的解決方案是不是通過twinxtwiny,我一直沒能找到解決的辦法與host_suplot沒有......和我所有的研究使我與共享軸的解決方案,這不能解決這種特殊情況。 謝謝。

+0

看看'tvinx'如何引擎蓋下的行爲。 – tacaswell

回答

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

+0

看起來完全正確。爲了使它「優雅」,將它隱藏在一個函數中;) – tacaswell

+0

非常感謝@ M4rtini,它完美地完成了這項工作 - 在沒有內置即時解決方案的情況下,我非常滿意您的工作。 [對不起,我不能投票] – ztl

+0

沒問題:)即使你不能投票,你也應該能夠接受答案。 – M4rtini

相關問題