2009-10-28 67 views
1

我正在繪製幾個等值線圖並排顯示特定函數的時間演變。我希望每個輪廓的值和顏色在所有子圖之間共享,但每次添加一個新的子圖時,都會重新計算輪廓值(如下圖所示),因此它們之間的任何比較都是沒有意義的。共享子圖之間的等值線圖屬性

Contour plots with colorbars http://www.inf.utfsm.cl/~rbonvall/colorbar-and-contour-plots.png

我試過設置在每個插曲實例cmapcolorbaraxes手動屬性的不同組合,但沒有成功。我如何分享所有子圖之間的等高線圖屬性?換句話說,如何爲所有子圖獲取相同的色條?

回答

2

您可以直接指定輪廓圖中要使用的輪廓值。這裏有一個例子:

alt text http://i36.tinypic.com/atpso5.png

import numpy as np 
import matplotlib.pyplot as plt 

x = np.arange(-1.2, 1.2, .025) 
y = np.arange(-1.2, 1.2, .025) 
X, Y = np.meshgrid(x, y) 
Z = np.cos(X)*np.cos(Y) 
Z = Z*Z 

plt.subplot(1,2,1) 
CS = plt.contour(X, Y, Z) # set levels automatically 
plt.clabel(CS, inline=1, fontsize=10) 
plt.subplot(1,2,2) 
CS = plt.contour(X, Y, Z-.1, CS.levels) # set levels as previous levels 
plt.clabel(CS, inline=1, fontsize=10) 
plt.show() 
+0

感謝湯姆,這是一個明智的做法,但我寧願有自動計算出的值,因爲我會用不同的值範圍密謀幾種不同的功能。如果沒有進一步的響應,我將使用此解決方案並通過查找所有陣列中的最小值和最大值來自己計算值。 – 2009-10-29 15:49:36

+0

這只是一個小小的改變。我會更新我的答案。 – tom10 2009-10-29 16:02:16

+0

謝謝!我忽略了'levels'屬性。現在它工作:) – 2009-10-30 13:47:54