首頁>Program>source

我需要拍摄一张照片並在经過一段時間後儲存.当我顯示它時,圖形看起来很好,但在儲存圖形後,我在儲存的圖像週圍有一些空白區域.我試過了 'tight'   savefig的選項   方法,也没用.代碼:

 import matplotlib.image as mpimg
  import matplotlib.pyplot as plt
  fig = plt.figure(1)
  img = mpimg.imread(path)
  plt.imshow(img)
  ax=fig.add_subplot(1,1,1)
  extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
  plt.savefig('1.png', bbox_inches=extent)
  plt.axis('off') 
  plt.show()

我試圖在圖上使用NetworkX绘製基本圖並儲存.我意識到没有圖形它可以工作,但是当添加圖形時,我会在儲存的圖像週圍获得空白區域;

import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import networkx as nx
G = nx.Graph()
G.add_node(1)
G.add_node(2)
G.add_node(3)
G.add_edge(1,3)
G.add_edge(1,2)
pos = {1:[100,120], 2:[200,300], 3:[50,75]}
fig = plt.figure(1)
img = mpimg.imread("C:\\images\\1.jpg")
plt.imshow(img)
ax=fig.add_subplot(1,1,1)
nx.draw(G, pos=pos)
extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
plt.savefig('1.png', bbox_inches = extent)
plt.axis('off') 
plt.show()
最新回復
  • 2019-7-31
    1 #

    我無法宣稱我確切知道為什麼或如何解決我的"解決方案"問题.工作,但這是我想要绘製几个機翼部分的轮廓時我必须做的事情— 没有白邊 - — 到PDF檔案。 (註意我在IPython笔記本中使用了matplotlib,並使用了-pylab標志。)

    gca().set_axis_off()
    subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, 
                hspace = 0, wspace = 0)
    margins(0,0)
    gca().xaxis.set_major_locator(NullLocator())
    gca().yaxis.set_major_locator(NullLocator())
    savefig("filename.pdf", bbox_inches = 'tight',
        pad_inches = 0)
    

    我試圖停用此功能的不同部分,但這总会匯致某處出現白色邊缘.您甚至可以對其进行修改以使得靠近圖形極限的胖線不会因缺少邊距而被剃光。

  • 2019-7-31
    2 #

    您可以通過設置 bbox_inches="tight"来移除空白填充   在 savefig

    plt.savefig("test.png",bbox_inches='tight')
    

    你必须把論點提到 bbox_inches   作為一个字元串,也许這就是為什麼它不適合你的原因。


    Possible duplicates:

    Matplotlib绘圖:删除轴,圖例和空格

    如何設置matplotlib圖的邊距?

    减少matplotlib圖中的左右邊距

  • 2019-7-31
    3 #

    我从Arvind Pereira(http://robotics.usc.edu/~ampereir/wordpress/?p=626)找到了一些东西,似乎有效 對我来說:

    plt.savefig(filename, transparent = True, bbox_inches = 'tight', pad_inches = 0)
    

  • 2019-7-31
    4 #

    我發現以下代碼可以很好地完成這項工作。

    fig = plt.figure(figsize=[6,6])
    ax = fig.add_subplot(111)
    ax.imshow(data)
    ax.axes.get_xaxis().set_visible(False)
    ax.axes.get_yaxis().set_visible(False)
    ax.set_frame_on(False)
    plt.savefig('data.png', dpi=400, bbox_inches='tight',pad_inches=0)
    

  • 2019-7-31
    5 #

    以下功能包含上面的johannes-s答案.我用 plt.figure測試了它   和 plt.subplots()   有多个轴,效果很好。

    def save(filepath, fig=None):
        '''Save the current image with no whitespace
        Example filepath: "myfig.png" or r"C:\myfig.pdf" 
        '''
        import matplotlib.pyplot as plt
        if not fig:
            fig = plt.gcf()
        plt.subplots_adjust(0,0,1,1,0,0)
        for ax in fig.axes:
            ax.axis('off')
            ax.margins(0,0)
            ax.xaxis.set_major_locator(plt.NullLocator())
            ax.yaxis.set_major_locator(plt.NullLocator())
        fig.savefig(filepath, pad_inches = 0, bbox_inches='tight')
    

  • C#反序列化xml获取元素值
  • javascript:將地址欄位複製到帐單地址欄位中