Итак, я пытаюсь визуализировать кластеры и точки в Dash, но у меня возникают проблемы с побочной функцией. Вместо того, чтобы давать мне все кластеры и наборы точек, я получаю только первое из каждого измерения. И я знать это должно быть существенная ошибка новичка, но мой мозг отказывается выбираться из той ямы, которую он сам выкопал.
Итак, что я делаю неправильно здесь?
def make_dataset(data, clusters):
# Check if there are clusters to plot
if len(clusters) <= 0:
return
ndim = data.shape[1] #number of features
nrecords = data.shape[0] #data points
data_extent = [[min(data[:, x]), max(data[:, x])] for x in range(0, ndim)]
# Plot clusters in each dimension
for dim in range(1, ndim + 1):
# Get all clusters in 'dim' dimension(s)
clusters_in_dim = []
for c in clusters:
if len(c.dimensions) == dim:
clusters_in_dim.append(c)
# Check if there are clusters in 'dim' dimension(s)
dim_nclusters = len(clusters_in_dim)
if dim_nclusters <= 0:
continue
# Plot all data points as black points
if dim == 1:
xnoise = data[:, 0] #label = noise
ynoise = [0] * nrecords #label = noise
ptx1 = [0] * nrecords
pty1 = data[:, 1]
elif dim == 2:
ptx2 = data[:, 0] #label = noise
pty2 = data[:, 1] #label = noise
# For all clusters in 'dim' dimension(s)
for i, c in enumerate(clusters_in_dim):
c_size = len(c.data_point_ids)
c_attrs = list(c.dimensions)
c_elems = list(c.data_point_ids)
if dim == 1: # one-dimensional clusters
cx1 = data[c_elems, 0] if c_attrs[0] == 0 else [0] * c_size
cy1 = data[c_elems, 1] if c_attrs[0] == 1 else [0] * c_size
elif dim == 2: # two-dimensional clusters
cx2 = data[c_elems, c_attrs[0]]
cy2 = data[c_elems, c_attrs[1]]
return xnoise, ynoise, ptx1, pty1, ptx2, pty2, cx1, cy1, cx2, cy2
моя догадка состоит в том, чтобы сохранить переменные x и y в виде массивов, но буду ли я перебирать их, например:
for x in range(len(clusters)):
ptx1.append(clusters[x])
это вообще имеет смысл? для этого лучше использовать наборы или списки, так как я должен иметь доступ к каждому кластеру отдельно для визуализации






Вы перезапись ваши переменные.
Таким образом, возвращается только последнее значение.