相关疑难解决方法(0)

在matplotlib中删除已保存图像周围的空白区域

我需要拍摄一张图像并在一些过程后保存.当我显示它时,图形看起来很好,但是当我保存图形时,我在保存的图像周围有一些空白区域.我试过方法的'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()
Run Code Online (Sandbox Code Playgroud)

我试图通过在图上使用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()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

138
推荐指数
10
解决办法
11万
查看次数

如何消除matplotlib中子图之间的差距?

下面的代码会在子图之间产生间隙.如何消除子图之间的间隙并使图像成为紧密的网格?

在此输入图像描述

import matplotlib.pyplot as plt

for i in range(16):
    i = i + 1
    ax1 = plt.subplot(4, 4, i)
    plt.axis('on')
    ax1.set_xticklabels([])
    ax1.set_yticklabels([])
    ax1.set_aspect('equal')
    plt.subplots_adjust(wspace=None, hspace=None)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

94
推荐指数
6
解决办法
8万
查看次数

条形图中恼人的白色空间(matplotlib,Python)

这可能是一个微不足道的问题,但我试图用matplotlib和x轴上的旋转文本绘制条形图.我正在使用的代码如下所示:

fig = plt.figure()

x_labels_list = []

for i in range(0, pow(2, N)):
    x_labels_list.append(str(f(i)))  # The function f() converts i to a binary string

ax = plt.subplot(111)
width = 1.0
bins = map(lambda x: x-width, range(1,pow(2,N)+1))
ax.bar(bins, my_data, width=width)
ax.set_xticks(map(lambda x: x-width/2, range(1,pow(2,N)+1)))
ax.set_xticklabels(x_labels_list, rotation=90, rotation_mode="anchor", ha="right")
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是我在x轴的右边获得了一个恼人的空白区域,如下图中的红色椭圆所示:

在此输入图像描述

你知道我怎么能把它删除吗?提前致谢!

python matplotlib bar-chart

21
推荐指数
1
解决办法
1万
查看次数

10
推荐指数
5
解决办法
3万
查看次数

添加具有约束布局的外部边距?

生成图形以保存到 pdf 文件时,我想调整图形相对于页面边缘的位置,例如沿所有边添加英寸边距。据我所知,这样做的解决方案(例如,在这个问题中)要么:

  1. 不使用constrained_layout模式 -plt.subplots_adjust()在创建图形之后但在fig.savefig()弄乱受约束的布局之前应用
  2. 实际上不要定量地调整图形的位置——添加bbox_inches="tight"pad=-1似乎没有做任何有意义的事情

有没有一种直接的方法来调整受限布局图形的外部边距?

例如:

fig = plt.figure(constrained_layout=True, figsize=(11, 8.5))

page_grid = gridspec.GridSpec(nrows=2, ncols=1, figure=fig)

# this doesn't appear to do anything with constrained_layout=True
page_grid.update(left=0.2, right=0.8, bottom=0.2, top=0.8)

top_row_grid = gridspec.GridSpecFromSubplotSpec(1, 3, subplot_spec=page_grid[0])
for i in range(3):
    ax = fig.add_subplot(top_row_grid[:, i], aspect="equal")

n_bottom_row_plots = 10
qc_grid = gridspec.GridSpecFromSubplotSpec(1, n_bottom_row_plots, subplot_spec=page_grid[1])
for i, metric in enumerate(range(n_bottom_row_plots)):
    ax = fig.add_subplot(qc_grid[:, i])
    plt.plot(np.arange(5), np.arange(5))

fig.suptitle("my big label", fontweight="bold", …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
2
解决办法
477
查看次数

matplotlib:拉伸图像以覆盖整个图形

我已经习惯了使用matlab,现在正试图让移位matplotlib和numpy.matplotlib中是否有一种方法是您正在绘制的图像占据整个图形窗口.

import numpy as np
import matplotlib.pyplot as plt

# get image im as nparray
# ........

plt.figure()
plt.imshow(im)
plt.set_cmap('hot')

plt.savefig("frame.png")
Run Code Online (Sandbox Code Playgroud)

我希望图像保持其纵横比并缩放到图形的大小......所以当我保存它时,它与输入图形完全相同,并且它完全被图像覆盖.

谢谢.

matplotlib figure

3
推荐指数
1
解决办法
4056
查看次数

Matplotlib:为左侧和右侧设置不同的边距

我知道如何增加两边的边距matplotlib

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.set_xmargin(0.3)   

ax.plot(range(10), np.random.rand(10))
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

但是,我只想在右侧有一个边距:类似于ax.set_xmargin(left=0.0, right=0.3). 那可能吗?我无法手动设置轴限制,因为绘图是动画的,并且每一步数据都在变化。

python matplotlib

3
推荐指数
1
解决办法
1453
查看次数

如何仅删除绘图顶部的空间 - matplotlib

我在网上看到很多帖子和答案试图回答这个问题。
然而,使用bbox_inches = 'tight'图例消失了。

这是我的数字之一: 在此输入图像描述

由于我在图框之外有图例,因此我想仅删除顶部和底部的空白区域。

有人知道如何至少删除顶部空白吗?

多谢!

python django matplotlib

2
推荐指数
1
解决办法
7463
查看次数

标签 统计

matplotlib ×7

python ×7

bar-chart ×1

django ×1

figure ×1

pandas ×1

pdf ×1

pypdf ×1

reportlab ×1