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

如何为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:55:47