相关疑难解决方法(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中删除框架(pyplot.figure vs matplotlib.figure)(frameon =在matplotlib中有问题)

为了删除图中的帧,我写了

frameon=False
Run Code Online (Sandbox Code Playgroud)

与之完美搭配pyplot.figure,但只有matplotlib.Figure它才能消除灰色背景,框架保持不变.另外,我只想显示线条,图中所有其余部分都是透明的.

使用pyplot我可以做我想做的事情,我想用matplotlib来做这件事有一个长期的原因我宁愿不提及我的问题.

python matplotlib

127
推荐指数
9
解决办法
18万
查看次数

在子图中关闭轴

我有以下代码:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.cm as cm

img = mpimg.imread("lena.jpg")

f, axarr = plt.subplots(2, 2)
axarr[0,0].imshow(img, cmap = cm.Greys_r)
axarr[0,0].set_title("Rank = 512")

rank = 128
new_img = prune_matrix(rank, img)
axarr[0,1].imshow(new_img, cmap = cm.Greys_r)
axarr[0,1].set_title("Rank = %s" %rank)

rank = 32
new_img = prune_matrix(rank, img)
axarr[1,0].imshow(new_img, cmap = cm.Greys_r)
axarr[1,0].set_title("Rank = %s" %rank)

rank = 16
new_img = prune_matrix(rank, img)
axarr[1,1].imshow(new_img, cmap = cm.Greys_r)
axarr[1,1].set_title("Rank = %s" %rank)

plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,由于轴上的值,结果非常难看:

在此输入图像描述

如何同时关闭所有子图的轴值?

python image matplotlib

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

从matplotlib绘图中删除填充

我正在matplotlib中绘制一个图像,它不断给我一些填充.这是我尝试过的:

def field_plot():
    x = [i[0] for i in path]
    y = [i[1] for i in path]
    plt.clf()
    plt.axis([0, 560, 0, 820])
    im = plt.imread('field.jpg')
    field = plt.imshow(im)
    for i in range(len(r)):
        plt.plot(r[i][0],r[i][1],c=(rgb_number(speeds[i]),0,1-rgb_number(speeds[i])),linewidth=1)
    plt.axis('off')
    plt.savefig( IMG_DIR + 'match.png',bbox_inches='tight', transparent="True")
    plt.clf()
Run Code Online (Sandbox Code Playgroud)

这就是我看到图像的方式

python django matplotlib padding

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

关闭极限matplotlib图的轴边界

我在matplotlib中有一个极轴,其文本延伸到轴的范围之外.我想删除轴的边框 - 或将其设置为背景的颜色,以便文本更清晰.我怎样才能做到这一点?

简单地增加轴的大小是不可接受的解决方案(因为该图可嵌入GUI中,如果完成则变得太小).将背景颜色更改为黑色以使边框不可见也不是可接受的解决方案.

在此输入图像描述

省略了绘制事物的各个部分的大量代码,但这里是图形和轴本身的生成:

import pylab as pl
fig = pl.figure(figsize=(5,5), facecolor='white')
axes = pl.subplot(111, polar=True, axisbg='white')

pl.xticks([])
pl.yticks([])
pl.ylim(0,10)

# ... draw lots of things
Run Code Online (Sandbox Code Playgroud)

python matplotlib

11
推荐指数
1
解决办法
4681
查看次数

matplotlib绘制小图像而无需重新采样

我正在尝试使用matplotlib在python中绘制一个小图像,并希望显示的轴具有与它生成的numpy数组相同的形状,即数据不应重新采样.换句话说,数组中的每个条目应对应于屏幕上的像素(或其左侧).这看起来微不足道,但即使在网上拖网一段时间之后,我似乎无法让它起作用:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = np.random.rand(30,40)

fig = plt.figure()
fig.add_axes(aspect="equal",extent=[0, X.shape[1], 0, X.shape[0]])
ax = fig.gca()
ax.autoscale_view(True, False, False)
ax.imshow(X, cmap = cm.gray)

plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
1
解决办法
4097
查看次数

Matplotlib 散点图 - 删除白色填充

我正在使用 matplotlib 绘制纬度经度坐标中的变量。问题是此图像不能包含轴或边框。我已经能够删除轴,但我的图像周围的白色填充必须完全删除(请参阅下面代码中的示例图像:http : //imgur.com/a/W0vy9)。

我尝试了 Google 搜索中的几种方法,包括这些 StackOverflow 方法:

从 matplotlib 绘图中删除填充

如何删除 matplotlib 子图中的填充/边框(已解决)

Matplotlib 绘图:删除轴、图例和空格

但在去除空白方面没有任何作用。如果您有任何建议(即使是放弃 matplotlib 并尝试使用另一个绘图库),我将不胜感激!

这是我正在使用的代码的基本形式,它显示了这种行为:

import numpy as np
import matplotlib
from mpl_toolkits.basemap import Basemap
from scipy import stats

lat = np.random.randint(-60.5, high=60.5, size=257087)
lon = np.random.randint(-179.95, high=180, size=257087)
maxnsz =  np.random.randint(12, 60, size=257087)

percRange = np.arange(100,40,-1)
percStr=percRange.astype(str)
val_percentile=np.percentile(maxnsz, percRange, interpolation='nearest')  

#Rank all values
all_percentiles=stats.rankdata(maxnsz)/len(maxnsz)
#Figure setup
fig = matplotlib.pyplot.figure(frameon=False, dpi=600)
#Basemap code can go here

x=lon
y=lat

cmap = matplotlib.cm.get_cmap('cool') …
Run Code Online (Sandbox Code Playgroud)

python data-visualization matplotlib scatter-plot

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

使用Matloptlib将图像(仅包含内容,不包含轴或其他内容)保存到文件中

我想从wav文件中获取一个频谱图,然后将其保存为png,但是我只需要图像的内容(而不是轴或其他任何东西)。我遇到了
Matplotlib绘制的这些问题:删除轴,图例和空白区域
scipy:没有框架,轴,仅内容的savefig
我也阅读了Matplotlib文档,但似乎无用,因此上述问题的答案已过时或我做错事是因为简单

plt.savefig('out.png', bbox_inches='tight', pad_inches=0)

不做我想实现的目标。最初,我尝试遵循此指南,但是代码崩溃了。然后,我尝试了这种方法,但是由于它已经过时,因此我对其进行了一些修改:

import matplotlib.pyplot as plt
from scipy.io import wavfile
import numpy as np

def graph_spectrogram(wav_file):
    rate, data = wavfile.read(wav_file)
    pxx, freqs, bins, im = plt.specgram(x=data, Fs=rate, noverlap=384, NFFT=512)
    plt.axis('off')
    plt.savefig('sp_xyz.png', bbox_inches='tight', dpi=300, frameon='false')

if __name__ == '__main__': # Main function
    graph_spectrogram('...')
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:
在此处输入图片说明 也许它不可见,但是内容周围有一个白色边框(从最大到最小):左,下,上,右。我想要相同的图像,但只包含内容,没有其他内容。我该如何实现?我使用python 3.6和Matplotlib 2.0.2。

python plot matplotlib spectrogram

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

matplotlib ax 到图形范围 - 删除空白、边框、geopandas 地图绘图的所有内容

我正在寻找一种使用 matplotlib 进行无缝地图图像绘制的解决方案。当前的代码运行良好且稳定,但是,它在左侧和底部留下了空白。我想删除这个空白,但不知道如何。

我的示例代码:

import geopandas
from seaborn import despine
from pandas import read_csv
import matplotlib.pyplot as plt

# read data and shapefile
geo_path = 'shapefiles/ne_10m_admin_0_countries.shp'
df = read_csv('UNpopEstimates2100.csv')
world = geopandas.read_file(geo_path)

# specifiy what is to be plotted
cm = 'Greys'
world['2015'] = df['2015']

# set plot environment
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
ax.axis('off')
plt.subplots_adjust(left=0, right=1, bottom=0, top=1)

world.plot(ax=ax, column='2015', cmap=cm, scheme='quantiles')

plt.savefig('sample.png', bbox_inches='tight', tight_layout=True, pad_inches=0, frameon=None)
Run Code Online (Sandbox Code Playgroud)

样本.png

我想删除带有标记空白的 smaple.png

我遵循了Matplotlib's Tight Layout Guide、 …

python plot matplotlib removing-whitespace geopandas

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