python - 将 matplotlib 保存为最终给定大小,包括标题
问题描述
我正在制作用于出版的数字。我需要最终的数字,包括标题和文本,宽度为 3 英寸,并保存为 .tiff 文件。我知道我可以使用 matplotlib.pyplot.figure(figsize=(3,2), dpi=300) 通过 matplotlib 指定绘图的大小,但这仅指定实际绘图的大小,不包括标题和所有内容。此外,当我尝试此方法时,标题会从我保存的 .tiff 文件中删除。当然,简单的解决方法是减小绘图的大小并手动使图形成为正确的大小,但是有没有人知道一种自动的方法来使绘图成为一个给定的最终大小,包括所有的花里胡哨?
这是保存的输出图像(这是一个png,因此可以上传到stackoverflow)。请注意,由于某种原因,情节标题被切断了。
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from PIL import Image
from io import BytesIO
bent=[2.83263904,2.75860489,2.64546045,2.4949913,2.34923737,2.16430217,2.02562783,1.82478841,1.70324689,1.70315642,1.39739535,1.33945747,1.22295623,1.15726486,1.08449954,0.96155077,0.90325786,0.84547091]
bent=[i/27 for i in bent]
print(bent)
planar=[4.11233905,3.93027011,3.65135645,3.38525615,3.1130921,2.81042899,2.58995789,2.36159934,2.15981447,1.9964454,1.74375941,1.63263452,1.48503205,1.38596544,1.26501988,1.17391638,1.07490417,0.99369748]
planar=[i/27 for i in planar]
bi=[2.51027966,2.56495852,2.47033072,2.33008642,2.19395126,2.13732249,1.80922673,1.76037446,1.52930137,1.56732451,1.33905847,1.24952153,1.15699233,1.08251496,0.98449116,0.93838164,0.86542147,0.725736]
bi=[i/34 for i in bi]
T=[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
arr=[bi,bent,planar]
arr=np.array(arr)
arr=arr.T
font = {'family' : 'normal',
'weight' : 'normal',
'size' : 8}
matplotlib.rc('font', **font)
fig = plt.figure(figsize=(3,2), dpi=300)
plt.title("-ΔS$_m$ vs T") #for Fe$_4$Gd
plt.xlabel('Temperature (K)')
plt.ylabel("$-ΔS_m$ ($J.K^{-1}.mol^{-1}n (e^{-})^{-1}$)")
MMM=('Fe$_4$Gd$_2$','Fe$_4$Gd bent','Fe$_4$Gd planar')
plt.plot(T,arr,'o')
plt.legend(MMM, loc='best')
# save figure
# (1) save the image in memory in PNG format
png1 = BytesIO()
fig.savefig(png1, format='png')
# (2) load this image into PIL
png2 = Image.open(png1)
# (3) save as TIFF
png2.save('TESTTESTTEST.tiff')
png1.close()
解决方案
使用plt.tight_layout()
. 您可以在此处找到更多详细信息。
推荐阅读
- android - 意图 ACTION_GET_CONTENT 即使对于已删除的文件也会返回 uri
- sql - 通过循环创建 UNION ALL 语句
- php - 检查文件是否被并发进程锁定
- c - Sqlite 给出相同的输出并且不考虑 where 子句顺序
- shopify - My Shopify 商店中的问题 - 示例产品从订单摘要中消失
- node.js - 如何从 VS Code 启动和调试 Outlook Web 插件?
- c# - 更改父级的大小而不影响其子级的大小
- c# - 如何从 C# 调用 Delphi DLL(方法的类型签名不是 PInvoke 兼容错误)?
- notifications - 网络通知多次出现
- oracle - 具有可变列别名的过程结果 - PLSQL/Oracle