代码之家  ›  专栏  ›  技术社区  ›  Gilfoyle

matplotlib:将绘图转换为无边框的numpy数组

  •  0
  • Gilfoyle  · 技术社区  · 6 年前

    我使用 scatter() 生成此图:

    然后我将绘图转换为numpy数组进行进一步处理,得到:

    我怎样才能摆脱边境?

    这是我的代码:

    导入matplotlib.pyplot as plt 将numpy导入为np n=500 域\大小=1000 x=np.random.randint(0,域大小,(n,2)) 图,ax=plt.子批次(frameon=false) 图设置尺寸英寸(5,5) X散点图(X[:,0],X[:,1],C=“黑色”,S=200,marker=“*”) ax.set xlim(0,域大小) ax.set ylm(0,域大小) 图添加轴(ax) 图.canvas.draw()) x=np.array(图canvas.renderer.\u renderer) X=0.2989*X[:,:,1]+0.5870*X[:,:,2]+0.1140*X[:,:,3] 请显示()) 请关闭()) plt.imshow(x,interpolation=“none”,cmap=“gray”)。 请显示())

    然后我将绘图转换为numpy数组进行进一步处理,得到:

    enter image description here

    我怎样才能摆脱边境?

    这是我的代码:

    import matplotlib.pyplot as plt
    import numpy as np
    
    n = 500
    domain_size = 1000
    
    x = np.random.randint(0,domain_size,(n,2))
    
    fig, ax = plt.subplots(frameon=False)
    fig.set_size_inches((5,5))
    ax.scatter(x[:,0], x[:,1], c="black", s=200, marker="*")
    ax.set_xlim(0,domain_size)
    ax.set_ylim(0,domain_size)
    fig.add_axes(ax)
    
    fig.canvas.draw()
    
    X = np.array(fig.canvas.renderer._renderer)
    X = 0.2989*X[:,:,1] + 0.5870*X[:,:,2] + 0.1140*X[:,:,3]
    
    plt.show()
    plt.close()
    
    plt.imshow(X, interpolation="none", cmap="gray")
    plt.show()
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   swatchai    6 年前

    在渲染绘图之前,每次都应关闭 。下面是修改后的代码,它可以这样做。

    导入matplotlib.pyplot as plt 将numpy导入为np n=500 域\大小=100 x=np.random.randint(0,域大小,(n,2)) 图,ax=plt.子批次()。 图设置尺寸英寸(5,5) X散点图(X[:,0],X[:,1],C=“黑色”,S=200,marker=“*”) ax.set xlim(0,域大小) ax.set ylm(0,域大小) 轴(关) 图添加轴(ax) 图.canvas.draw()) #这使这个数字变得模糊不清。 x=np.array(图canvas.renderer.\u renderer) X=0.2989*X[:,:,1]+0.5870*X[:,:,2]+0.1140*X[:,:,3] 请显示()) 请关闭()) #绘制图像数组x 图2,ax2=plt.子批次() plt.imshow(x,interpolation=“none”,cmap=“gray”)。 ax2.轴(‘关闭’) 请显示())

    
    

    结果图:

    结果图:

    enter image description here

        2
  •  0
  •   Gilfoyle    6 年前

    我知道如何摆脱边界。只需更换

    fig, ax = plt.subplots(frameon=False)
    

    具有

    fig = plt.figure()
    ax = fig.add_axes([0.,0.,1.,1.])
    

    而且效果很好。