栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Matplotlib中设置绘图画布的大小

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Matplotlib中设置绘图画布的大小

这是我对Matplotlib的最大挫败之一。我经常使用栅格数据,例如要在其中添加颜色图,图例和一些标题。matplotlib库中的任何简单示例都将导致不同的分辨率,因此需要重新采样数据。尤其是在进行图像分析时,您不需要任何(不需要的)重新采样。

这是我通常会做的事情,尽管我很想知道是否有更简单或更好的方法。

让我们从加载图片并以相同分辨率输出图片开始:

import matplotlib.pyplot as pltimport urllib2# load the imageimg = plt.imread(urllib2.urlopen('http://upload.wikimedia.org/wikipedia/en/thumb/5/56/Matplotlib_logo.svg/500px-Matplotlib_logo.svg.png'))# get the dimensionsypixels, xpixels, bands = img.shape# get the size in inchesdpi = 72.xinch = xpixels / dpiyinch = ypixels / dpi# plot and save in the same size as the originalfig = plt.figure(figsize=(xinch,yinch))ax = plt.axes([0., 0., 1., 1.], frameon=False, xticks=[],yticks=[])ax.imshow(img, interpolation='none')plt.savefig('D:\mpl_logo.png', dpi=dpi, transparent=True)

请注意,我手动定义了轴的位置,以便跨越整个图形。

与上述类似,您可以在图像周围添加一些边距,以允许使用标签或颜色条等。

本示例在图像上方添加20%的边距,然后将其用于绘制标题:

fig = plt.figure(figsize=(xinch,yinch/.8))ax = plt.axes([0., 0., 1., .8], frameon=False, xticks=[],yticks=[])ax.imshow(img, interpolation='none')ax.set_title('Matplotlib is fun!', size=16, weight='bold')plt.savefig('D:\mpl_logo_with_title.png', dpi=dpi)

因此,图形的y尺寸(高度)增加,轴的y尺寸均等地减小。这样可以提供更大(整体)的输出图像,但是轴区域仍将是相同大小。

具有诸如.set_scale()之类的图形或轴属性来强制执行真正的1-on-x输出可能会很好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641520.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号