使用dtaidistance绘制DTW路径无输出,加plt.show仍无效,求原因
运行dtaidistance的DTW可视化代码无输出,添加plt.show()仍无效的原因?
我尝试运行dtaidistance官方文档中的DTW示例代码:
from dtaidistance import dtw from dtaidistance import dtw_visualisation as dtwvis import numpy as np s1 = np.array([0., 0, 1, 2, 1, 0, 1, 0, 0, 2, 1, 0, 0]) s2 = np.array([0., 1, 2, 3, 1, 0, 0, 0, 2, 1, 0, 0, 0]) path = dtw.warping_path(s1, s2) dtwvis.plot_warping(s1, s2, path, filename="warp.png")
预期生成DTW路径可视化图,但实际无绘图输出。我已导入matplotlib.pyplot并添加plt.show()语句,问题仍未解决,请问导致该情况的原因是什么?
可能的原因及解决办法
filename参数触发直接保存而非显示
当指定filename="warp.png"时,dtwvis.plot_warping会直接将图像写入文件,不会在界面渲染。即使后续调用plt.show()也无效,因为函数内部保存后可能已关闭绘图对象。
解决方法:先移除filename参数,让图像优先显示;如果需要同时保存和显示,可手动获取绘图对象后操作:from dtaidistance import dtw from dtaidistance import dtw_visualisation as dtwvis import numpy as np import matplotlib.pyplot as plt s1 = np.array([0., 0, 1, 2, 1, 0, 1, 0, 0, 2, 1, 0, 0]) s2 = np.array([0., 1, 2, 3, 1, 0, 0, 0, 2, 1, 0, 0, 0]) path = dtw.warping_path(s1, s2) # 获取绘图对象,先显示再保存 fig, ax = dtwvis.plot_warping(s1, s2, path) plt.show() fig.savefig("warp.png")matplotlib后端配置不支持显示
在无GUI的服务器环境或部分终端中,matplotlib默认后端可能不支持交互式显示。可以手动指定支持显示的后端,在代码开头添加:import matplotlib matplotlib.use('TkAgg') # 或'Qt5Agg'等适配当前系统的后端dtaidistance版本存在行为差异
不同版本的dtw_visualisation模块在绘图逻辑上可能有变化,尝试升级到最新版本:pip install --upgrade dtaidistance绘图对象被隐式关闭
部分旧版本中,指定filename后函数会自动关闭figure对象,导致plt.show()找不到可渲染的图像。此时需避免在显示前指定filename,或手动创建figure并传递给绘图函数。
内容的提问来源于stack exchange,提问作者Skobo Do
相关产品推荐
相关产品推荐

