如何为dtwvis生成的DTW图表添加坐标轴名称?
为dtaidistance的DTW图表添加坐标轴标签
问题描述
使用dtaidistance库进行动态时间规整(DTW)分析时,生成的plot_warpingpaths和plot_warping图表默认无坐标轴标签,需手动添加以提升可读性。现有代码如下:
from dtaidistance import dtw from dtaidistance import dtw_visualisation as dtwvis import matplotlib.pyplot as plt # 需导入matplotlib库 [...] s1 = array1 s2 = array2 d, paths = dtw.warping_paths(s1, s2) best_path = dtw.best_path(paths) dtwvis.plot_warpingpaths(s1, s2, paths, best_path, shownumbers=True) path = dtw.warping_path(s1, s2) dtwvis.plot_warping(s1, s2, path , filename="warp.svg") distance = dtw.distance(s1, s2) print("DTW distance=",distance)
解决方案
dtaidistance的可视化函数基于Matplotlib实现,调用时会返回对应的Figure和Axes对象,通过这些对象可直接设置坐标轴标签。
1. 为plot_warpingpaths添加标签
plot_warpingpaths返回多张子图的Axes数组,需针对不同子图分别配置标签:
# 调用绘图函数并接收返回的fig和axes对象 fig, axes = dtwvis.plot_warpingpaths(s1, s2, paths, best_path, shownumbers=True) # 左上角子图:序列1折线图 axes[0, 0].set_xlabel("序列1时间步长") axes[0, 0].set_ylabel("序列1数值") # 右上角子图:序列2折线图 axes[0, 1].set_xlabel("序列2时间步长") axes[0, 1].set_ylabel("序列2数值") # 中间子图:DTW路径矩阵 axes[1, 0].set_xlabel("序列2时间步长") axes[1, 0].set_ylabel("序列1时间步长") # 可选:保存或显示图表 plt.savefig("warping_paths_with_labels.svg") plt.show()
2. 为plot_warping添加标签
plot_warping返回单个Axes对象,直接设置即可:
# 调用绘图函数并接收返回的fig和ax对象 fig, ax = dtwvis.plot_warping(s1, s2, path) # 设置坐标轴标签 ax.set_xlabel("序列1时间步长") ax.set_ylabel("序列数值") # 保存图表(若未在函数参数中指定filename) plt.savefig("warp_with_labels.svg") plt.show()
说明
- 确保代码中导入了
matplotlib.pyplot,否则无法使用savefig或show方法。 - 标签文本可根据业务场景自定义,例如替换为具体物理量名称(如"温度"、"时间戳"等)。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

