Matplotlib中散点图的坐标轴限制不能保持

20

我正在尝试使用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
你能打印出 xLimHistyLimHist 的值,并展示它们是如何/在哪里计算的吗?当我制作自己的等高线图并叠加散点时,你的代码可以正常工作。如果我以一种排除某些散点的方式定义 xLimHistyLimHist,那么图形确实会排除这些点,并且它不会适应包含所有散点。因此,我的猜测是你错误地定义了 xLimHistyLimHist - ely
1个回答

28

我使用以下示例来尝试复制您的问题。如果保持默认设置,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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接