2012-04-24 81 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()