You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib读取PNG文件以完整显示图像内容?

问题

使用Matplotlib结合spectrum_utils生成PNG格式谱图后,在图片查看器中能完整显示所有内容(包括谱峰),但用Matplotlib的imread和imshow读取显示时,只能看到坐标系,看不到谱峰;添加aspect='auto'参数后又出现图中图的问题。需要在无原始谱数据的场景下读取并完整显示该图像。

代码示例:

import spectrum_utils.plot as sup
import spectrum_utils.spectrum as sus

import matplotlib as plt

db_hit_spectrum = sus.MsmsSpectrum('9407', 200.2373, 1, [71.0852, 85.1012], [2, 1])
query_spectrum = sus.MsmsSpectrum('9407', 200.2372, 1, [71.0858, 85.1013, 98.9841], [13000000., 6700000., 850000.])

fig, ax_1 = plt.subplots(figsize=(12, 6))
ax_1.set_title(f"DB hit of N-Methyldodecylamine and query spectrum with ID 9407")
sup.mirror(query_spectrum, db_hit_spectrum, spectrum_kws={'grid': False})

fig.savefig("test.png")

a = plt.imread("test.png")
plt.imshow(a)
解决方案

问题根源

  1. Matplotlib导入错误:原代码中import matplotlib as plt是错误的,正确导入应为import matplotlib.pyplot as plt,错误导入会导致部分绘图功能异常。
  2. imshow默认aspect='equal'强制图像保持像素比例,而生成的谱图宽高比为2:1(12:6),和Matplotlib默认的接近正方形的绘图区域不匹配,导致谱峰被压缩至几乎不可见。
  3. 添加aspect='auto'后出现图中图,是因为生成谱图的绘图窗口未关闭,imshow直接在原有坐标轴上叠加显示。

修正代码

import spectrum_utils.plot as sup
import spectrum_utils.spectrum as sus

# 修正Matplotlib导入方式
import matplotlib.pyplot as plt

db_hit_spectrum = sus.MsmsSpectrum('9407', 200.2373, 1, [71.0852, 85.1012], [2, 1])
query_spectrum = sus.MsmsSpectrum('9407', 200.2372, 1, [71.0858, 85.1013, 98.9841], [13000000., 6700000., 850000.])

# 生成并保存谱图
fig, ax_1 = plt.subplots(figsize=(12, 6))
ax_1.set_title(f"DB hit of N-Methyldodecylamine and query spectrum with ID 9407")
sup.mirror(query_spectrum, db_hit_spectrum, spectrum_kws={'grid': False})
fig.savefig("test.png")
plt.close(fig)  # 关闭生成谱图的窗口,避免干扰后续显示

# 读取并完整显示图像
img = plt.imread("test.png")
# 创建与原始谱图尺寸一致的新窗口
plt.figure(figsize=(12, 6))
plt.imshow(img, aspect='auto')
# 隐藏重复的坐标轴刻度,匹配图片查看器效果
plt.axis('off')
plt.show()

关键说明

  • plt.close(fig):关闭生成谱图的窗口,彻底避免绘图叠加问题。
  • 保持figsize与原始谱图一致:让显示比例完全匹配生成的PNG文件。
  • plt.axis('off'):隐藏多余的坐标轴元素,让显示效果和图片查看器一致。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:40:25