小编Pet*_*erW的帖子

Matplotlib:获取子图填充数字

我想请求如何在将图像绘制为子图时覆盖默认的matplotlib行为的建议,其中子图大小似乎与图形大小不匹配.我想设置我的图形尺寸(例如,以匹配A4页面的宽度)并使子图自动拉伸以填充可用空间.在下面的示例中,下面的代码给出了一个在面板之间有很多空白区域的图形:

import numpy as np
import matplotlib.pyplot as plt

data=np.random.rand(10,4)

#creating a wide figure with 2 subplots in 1 row
fig,ax=plt.subplots(1,2, figsize=(9,3))  
ax=ax.reshape(1,len(ax))

for i in [0,1]:
    plt.sca(ax[0,i])
    plt.imshow(data,interpolation='nearest')
    plt.colorbar()
Run Code Online (Sandbox Code Playgroud)

我希望子图可以水平拉伸,以便填充图形空间.我将在每个轴上制作许多具有不同数值的相似图,并且图之间的空间似乎取决于x值与y值的比率,所以我想知道是否有一个很好的通用方法来设置子图宽度填充空间.可以以某种方式指定子图的物理尺寸吗?我一直在寻找解决方案几个小时,所以提前感谢您提供的任何帮助.

python matplotlib subplot

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

在Matplotlib中调整图形质量

我已经编写了一些代码来在matplotlib中生成多面板图形。为了使图看起来更清晰,可以在文档中使用,我尝试增加dpi。但是,我发现这也改变了图形,字体,线条等的大小,如以下更简单的示例所示:

#First normal figure
fig, axarr = plt.subplots(2,2, figsize=(6,6))
for i,ax in enumerate(axarr.flatten()):
    ax.plot(range(10))
    ax.set_title('title'+str(i), fontsize=10)
    ax.set_xlabel('x'+str(i), fontsize=10)
    ax.set_ylabel('y'+str(i), fontsize=10)
plt.tight_layout()

#Again, with higher dpi
fig, axarr = plt.subplots(2,2, figsize=(6,6), dpi=200)
for i,ax in enumerate(axarr.flatten()):
    ax.plot(range(10))
    ax.set_title('title'+str(i), fontsize=10)
    ax.set_xlabel('x'+str(i), fontsize=10)
    ax.set_ylabel('y'+str(i), fontsize=10)

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

在我的计算机上(使用matplotlib 1.4.3),第二个图形的尺寸较大且文本较大,因此y轴标签重叠。如果不使用plt.tight_layout(),子图轴的重叠也会更糟。显然,这在尝试制作更高质量的图形时无济于事。这是怎么回事,如何更改图形质量并保持图形外观不变?当我调整了子图参数,添加了颜色条和图例等时,是否有一种解决方案也能正常工作?在此先感谢您提供的任何帮助。

python matplotlib

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

标签 统计

matplotlib ×2

python ×2

subplot ×1