Как изменить размер участка dtaidistance после кластеризации? - PullRequest
0 голосов
/ 01 октября 2019

Кажется, я не могу изменить размер выходного графика, используя пакет dtaidistance в Python / PyCharm. Похоже, что в функции model.plot отсутствует параметр «figsize» или что-то подобное, и завершение всего графика в стиле SciPy, как описано ниже, приводит к пустому графику [Код адаптирован из https://pydigger.com/pypi/dtaidistance]:

import matplotlib.pyplot as plt
from dtaidistance import dtw, clustering
import numpy as np

# demo data matrix:
series = np.matrix([
     [0., 0, 1, 2, 1, 0, 1, 0, 0],
     [0., 1, 2, 0, 0, 0, 0, 0, 0],
     [1., 2, 0, 0, 0, 0, 0, 1, 1],
     [0., 0, 1, 2, 1, 0, 1, 0, 0],
     [0., 1, 2, 0, 0, 0, 0, 0, 0],
     [1., 2, 0, 0, 0, 0, 0, 1, 1]])

# Custom Hierarchical clustering
model1 = clustering.Hierarchical(dtw.distance_matrix_fast, {})
# Augment Hierarchical object to keep track of the full tree
model2 = clustering.HierarchicalTree(model1)

# Fit Model:
cluster_idx = model2.fit(series=series)

# create plot:
fig = plt.figure(figsize=(14, 10))
tree = model2.plot("mytree.png")
plt.show()

В текущем состоянии график сохраняется как mytree.png , но с очень низким разрешением. Этот график с низким разрешением можно показать через

import matplotlib.image as mpimg

img = mpimg.imread("mytree.png")
imgplot = plt.imshow(img)
plt.show()

, но мне нужно гораздо более высокое разрешение, чем предоставленное ...

1 Ответ

0 голосов
/ 01 октября 2019

Я только что нашел решение. Создайте фигуру «Сюжеты» и назначьте правильную ось функции model.plot, удаляя указанное имя (сохранение не требуется):

fig, ax = plt.subplots(ncols=2, nrows=1, figsize=(12, 8))  # attention: 2 columns needed!
tree_plot = model2.plot(axes=ax)
plt.show()

Я думаю, что это все-таки проблема, связанная с matplotlib ...

...