2012-04-24 46 views
2

我試圖使用matplotlib,其中包含軸限制不持有matplotlib

plt.contourf(X, Y, XYprof.T, self.nLevels, extent=extentYPY, \ 
       origin = 'lower') 
    if self.doScatter == True and len(xyScatter['y']) != 0: 
     plt.scatter(xyScatter['x'], xyScatter['y'], \ 
        s=dSize, c=myColor, marker='.', edgecolor='none') 
    plt.xlim(-xLimHist, xLimHist) 
    plt.ylim(-yLimHist, yLimHist) 
    plt.xlabel(r'$x$') 
    plt.ylabel(r'$y$') 

結束意外事件發生是導致地塊疊加的散點圖到等高線圖擴大到包括所有的散點,可以超過輪廓圖的限制。有什麼辦法可以解決這個問題嗎?

+1

你能發表一個完整的例子,我們可以試試嗎? – Avaris 2012-04-24 03:18:13

+0

你可以打印'xLimHist'和'yLimHist'的值,並顯示它們的計算方式/位置?當我製作自己的等高線圖並覆蓋散點時,您的代碼將正常工作。如果我定義'xLimHist'和'yLimHist'應該排除一些散點,那麼該圖確實會排除這些散點,並且它不適合包含所有散點。所以我的猜測是你錯誤地定義了'xLimHist'和'yLimHist'。 – ely 2012-04-24 03:27:49

回答

8

我用下面的例子來試着複製你的問題。如果保留默認值,x和y的範圍是-3到3.我輸入xlim和ylim,所以兩者的範圍是-2到2.它工作。

import numpy as np 
    import matplotlib.pyplot as plt 
    from pylab import * 

    # the random data 
    x = np.random.randn(1000) 
    y = np.random.randn(1000) 

    fig = plt.figure(1, figsize=(5.5,5.5)) 

    X, Y = meshgrid(x, y) 
    Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
    Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1) 
    Z = 10 * (Z1 - Z2) 

    origin = 'lower' 
    CS = contourf(x, y, Z, 10, # [-1, -0.1, 0, 0.1], 
       cmap=cm.bone, 
       origin=origin) 

    title('Nonsense') 
    xlabel('x-stuff') 
    ylabel('y-stuff') 

    # the scatter plot: 
    axScatter = plt.subplot(111) 
    axScatter.scatter(x, y) 

    # set axes range 
    plt.xlim(-2, 2) 
    plt.ylim(-2, 2) 

    show()