【问题标题】:Matplotlib function visualtization changing with precisionMatplotlib 函数可视化随着精度的变化而变化
【发布时间】:2019-08-27 16:56:22
【问题描述】:

所以当我注意到某些东西时,我试图使用 matplotlib 在 3d 中绘制一些数学函数......当我尝试修复之前遇到一些“缺失表面”的问题时,3d 图突然改变(更像是坏掉了) ' - 情节中的空白。主要问题是 - 由于 Axes3d 的某些固有计算限制或其他原因,3d 图是否没有显示更高精度的两个峰值?还有一个次要问题——为什么在较低精度的图中我会在 +1.25 和 -1.25 附近遇到“缺失表面”?

我已经尝试在谷歌上搜索并参考了一些帖子,但除了更多问题之外什么都没有。

    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from matplotlib import cm
    from mpl_toolkits.mplot3d import Axes3D

    X=np.arange(-2,+2,0.025)
    ## Use np.arange(-5,+5,0.25) to experience the 'surface loss' I mention but otherwise correct 2 spike plot at each of (0,-1) and (0,+1) for both X and Y
    Y=np.arange(-2,+2,0.025)
    X,Y=np.meshgrid(X,Y)
    R=1+X**2-Y**2
    S=R**2+4*(X**2)*(Y**2)
    Z=R/S
    fig=plt.figure()
    ax=Axes3D(fig)
    ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=cm.viridis,norm=mpl.colors.Normalize(vmin=-1.,vmax=1.))
    ##NORMALIZE Was essential to get the proper color range
    plt.show()
    plt.savefig('art3d.jpeg',bbox_inches='tight')
    plt.savefig('art3d.svg',bbox_inches='tight')

理想的结果应该是这样的(显示函数和情节) https://i.stack.imgur.com/kVnYc.png 运行代码时可以看到我得到的两个图,因为我似乎无法添加图像,大概是因为声誉低:( 任何和所有的帮助表示赞赏。在此先感谢。

【问题讨论】:

    标签: python-3.x numpy matplotlib 3d graph-visualization


    【解决方案1】:

    首先请注意,使用的函数与 wolfram alpha 输出不同。因此,让我们使用屏幕截图中显示的功能。然后您可以将数据限制在您要显示的范围内。

    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from matplotlib import cm
    from mpl_toolkits.mplot3d import Axes3D
    
    X = np.arange(-2,+2,0.025)
    Y=np.arange(-2,+2,0.025)
    X,Y=np.meshgrid(X,Y)
    
    Z = -2*X*Y / ((2*X*Y)**2 + (X**2 - Y**2 + 1)**2)
    
    Z[(Z < -1)] = -1
    Z[(Z > 1)] = 1
    
    fig=plt.figure()
    ax=Axes3D(fig)
    ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=cm.viridis,norm=mpl.colors.Normalize(vmin=-1.,vmax=1.))
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多