首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置imshow比例

如何设置imshow比例
EN

Stack Overflow用户
提问于 2014-09-21 23:27:01
回答 2查看 9.1K关注 0票数 7

我受够了matplotlib,因为很难绘制指定大小的图像。

我有两张32*32,20*20大小的图片。我只想按其原始大小或与其原始大小成比例地绘制它们。

在阅读了很多关于SO的文章后,我现在使用的代码是

代码语言:javascript
复制
plt.autoscale(False)
plt.subplot(1, 2, 1); 
plt.imshow(img_blob[0, 0, :, :], cmap='gray',
           interpolation='nearest', extent=[0, 32, 0, 32])
plt.subplot(1, 2, 2); 
plt.imshow(output_blob[0, 0, :, :], cmap='gray',
           interpolation='nearest', extent=[0, 20, 0, 20])
plt.show()

但这两个图像仍然以相同的大小显示。

我试过figsize

代码语言:javascript
复制
plt.subplot(1, 2, 2, figsize=(2.0, 2.0)); 

但显然没有figsize属性。

有没有可能使这两个子图的大小不同?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-23 06:56:08

如果图像的比例非常重要,你也可以使用imshow的替代方案……有一个叫做figimage的东西,它将一个完全没有重新采样的图像显示给你的图形。使用它有点费力-它不会在幕后让你的生活变得更容易-但它在某些情况下是有用的。下面是使用您的示例的一些内容

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,1,20)
z1 = x[:,np.newaxis] * x
y = np.linspace(0,1,32)
z2 = y[:,np.newaxis] * y

fig = plt.figure(figsize=(2,1))
plt.figimage(z1, 25, 25, cmap='gray') # X, Y offsets are in pixels
plt.figimage(z2, 75, 25, cmap='gray')

plt.show()
票数 3
EN

Stack Overflow用户

发布于 2014-09-21 23:38:25

可以使用GridSpec执行不同大小的绘图。由于GridSpec需要从原始图形矩形创建大小相等的网格单元格,因此您必须自己计算比例,然后指定单元格跨度,以便填充正确的空间。

对于您的特定示例:

代码语言:javascript
复制
import matplotlib.pyplot as plt
ax1 = plt.subplot2grid((3,6), (0,0), colspan=3, rowspan=3)
ax2 = plt.subplot2grid((3,6), (0,3), colspan=2, rowspan=2)

如果你现在使用ax1和ax2绘图,它应该保持相对的纵横比正确(同时给出正确的图形大小)。不过,应该可以编写一种方法来自动执行这些计算。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25960755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档