首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: Savefig截取标题

Python: Savefig截取标题
EN

Stack Overflow用户
提问于 2016-03-15 00:08:08
回答 3查看 30.1K关注 0票数 29

嘿,我试着保存我的情节,但它总是切断我的标题。我认为这是因为y=1.05 (设置到标题的距离)。我修不好它。有没有办法保存整个图?

代码语言:javascript
复制
time=round(t[time_period],0)
most_sensitive=sorted(most_sensitive)
plt.figure(figsize=(10, 5))
plt.suptitle("Scatterplot "+str(name)+" , "+r'$\Delta$'+"Output , Zeit= "+str(time)+" s",fontsize=20,y=1.05)
figure_colour=["bo","ro","go","yo"]
for i in [1,2,3,4]:
    ax=plt.subplot(2,2,i)
    plt.plot(parm_value[:,most_sensitive[i-1]], Outputdiff[:,most_sensitive[i-1]],figure_colour[i-1])
    ax.set_xlabel(name+"["+str(most_sensitive[i-1])+"] in "+str(unit))
    ax.set_ylabel(r'$\Delta$'+"Output")
    lb, ub = ax.get_xlim( )
    ax.set_xticks( np.linspace(lb, ub, 4 ) )
    lb, ub = ax.get_ylim( )
    ax.set_yticks( np.linspace(lb, ub, 8 ) )
    ax.grid(True)


plt.tight_layout()
newpath = r'C:/Users/Tim_s/Desktop/Daten/'+str(name)+'/'+str(time)+'/'+'scatterplot'+'/'
if not os.path.exists(newpath):
    os.makedirs(newpath)
savefig(newpath+str(name)+'.png')
EN

回答 3

Stack Overflow用户

发布于 2019-12-17 18:17:15

我不知道我的场景是否与您的场景相同,但我通过在savefig调用中添加参数bbox_inches='tight'解决了我的问题。

对于那些在这个问题上遇到困难的人来说,这可能是有价值的。如果是我的话...

票数 60
EN

Stack Overflow用户

发布于 2016-03-15 00:35:02

可以使用plt.subplots_adjust控制子地块的位置。在这种情况下,要调整的相关选项是top

除了改变这一点之外,您还需要在suptitle中使y小于1(因为这在图形坐标中有效-任何大于1的内容都将在图形的顶部消失)。如果正确设置了y,您甚至可以完全忘记设置subplots_adjust

请注意,如果您仍然希望tight_layout控制子图放置的其余部分,则需要在tight_layout之后使用subplots_adjust行,否则将覆盖您在其中设置的任何内容。

(或者,您可以在subplots_adjust中设置leftrightbottom,并消除对tight_layout的需要)。

下面是一个示例脚本(取自示例中的相关部分):

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

plt.figure(figsize=(10,5))
name='mdot'
time='918.0'

plt.suptitle("Scatterplot "+str(name)+" , "+r'$\Delta$'+"Output , Zeit= "+str(time)+" s",fontsize=20)

for i in [1,2,3,4]:
    ax=plt.subplot(2,2,i)

plt.tight_layout()
plt.subplots_adjust(top=0.88)

plt.savefig('example.png')

票数 10
EN

Stack Overflow用户

发布于 2016-03-15 00:27:01

很难知道你得到的是什么,但以下几点应该有助于解决它:

将现有的suptitle替换为:

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

name = "test"
unit = 'cms'
most_sensitive = [1, 2, 3, 4, 5]
time = 5 #round(t[time_period],0)
most_sensitive=sorted(most_sensitive)
fig = plt.figure(figsize=(10, 5))
figure_colour=["bo","ro","go","yo"]
plt.suptitle("Scatterplot "+str(name)+" , "+r'$\Delta$'+"Output , Zeit= "+str(time)+" s",fontsize=20, y=0.95)

for i in [1, 2, 3, 4]:
    ax = plt.subplot(2, 2, i)
    #plt.plot(parm_value[:,most_sensitive[i-1]], Outputdiff[:,most_sensitive[i-1]],figure_colour[i-1])
    ax.set_xlabel(name+"["+str(most_sensitive[i-1])+"] in "+str(unit))
    ax.set_ylabel(r'$\Delta$'+"Output")
    lb, ub = ax.get_xlim( )
    ax.set_xticks( np.linspace(lb, ub, 4 ) )
    lb, ub = ax.get_ylim( )
    ax.set_yticks( np.linspace(lb, ub, 8 ) )
    ax.grid(True)

plt.tight_layout()
plt.subplots_adjust(top=0.85)     # Add space at top

newpath = r'C:/Users/Tim_s/Desktop/Daten/'+str(name)+'/'+str(time)+'/'+'scatterplot'+'/'
if not os.path.exists(newpath):
    os.makedirs(newpath)

plt.savefig(newpath+str(name)+'.png')

给你:

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

https://stackoverflow.com/questions/35992492

复制
相关文章

相似问题

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