Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bed3bec

Browse files
committed
Lock down test_dendrogram_random_matrix test.
1 parent fc7ce40 commit bed3bec

File tree

1 file changed

+90
-2
lines changed

1 file changed

+90
-2
lines changed

plotly/tests/test_optional/test_opt_tracefactory.py

Lines changed: 90 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,16 +322,104 @@ def test_default_dendrogram(self):
322322
self.assert_dict_equal(dendro['layout'], expected_dendro['layout'])
323323

324324
def test_dendrogram_random_matrix(self):
325+
325326
# create a random uncorrelated matrix
326327
X = np.random.rand(5, 5)
328+
327329
# variable 2 is correlated with all the other variables
328330
X[2, :] = sum(X, 0)
329331

330332
names = ['Jack', 'Oxana', 'John', 'Chelsea', 'Mark']
331333
dendro = tls.FigureFactory.create_dendrogram(X, labels=names)
332334

333-
# Check that 2 is in a separate cluster and it's labelled correctly
334-
self.assertEqual(dendro['layout']['xaxis']['ticktext'][0], 'John')
335+
expected_dendro = go.Figure(
336+
data=go.Data([
337+
go.Scatter(
338+
marker=go.Marker(color='rgb(61,153,112)'),
339+
mode='lines',
340+
xaxis='x',
341+
yaxis='y'
342+
),
343+
go.Scatter(
344+
marker=go.Marker(
345+
color='rgb(61,153,112)'
346+
),
347+
mode='lines',
348+
xaxis='x',
349+
yaxis='y'
350+
),
351+
go.Scatter(
352+
marker=go.Marker(color='rgb(61,153,112)'),
353+
mode='lines',
354+
xaxis='x',
355+
yaxis='y'
356+
),
357+
go.Scatter(
358+
marker=go.Marker(color='rgb(0,116,217)'),
359+
mode='lines',
360+
xaxis='x',
361+
yaxis='y'
362+
)
363+
]),
364+
layout=go.Layout(
365+
autosize=False,
366+
height='100%',
367+
hovermode='closest',
368+
showlegend=False,
369+
width='100%',
370+
xaxis=go.XAxis(
371+
mirror='allticks',
372+
rangemode='tozero',
373+
showgrid=False,
374+
showline=True,
375+
showticklabels=True,
376+
tickmode='array',
377+
ticks='outside',
378+
tickvals=[5.0, 15.0, 25.0, 35.0, 45.0],
379+
type='linear',
380+
zeroline=False
381+
),
382+
yaxis=go.YAxis(
383+
mirror='allticks',
384+
rangemode='tozero',
385+
showgrid=False,
386+
showline=True,
387+
showticklabels=True,
388+
ticks='outside',
389+
type='linear',
390+
zeroline=False
391+
)
392+
)
393+
)
394+
395+
self.assertEqual(len(dendro['data']), 4)
396+
397+
# it's random, so we can only check that the values aren't equal
398+
y_vals = [dendro['data'][0].pop('y'), dendro['data'][1].pop('y'),
399+
dendro['data'][2].pop('y'), dendro['data'][3].pop('y')]
400+
for i in range(len(y_vals)):
401+
for j in range(len(y_vals)):
402+
if i != j:
403+
self.assertFalse(np.allclose(y_vals[i], y_vals[j]))
404+
405+
x_vals = [dendro['data'][0].pop('x'), dendro['data'][1].pop('x'),
406+
dendro['data'][2].pop('x'), dendro['data'][3].pop('x')]
407+
for i in range(len(x_vals)):
408+
for j in range(len(x_vals)):
409+
if i != j:
410+
self.assertFalse(np.allclose(x_vals[i], x_vals[j]))
411+
412+
# we also need to check the ticktext manually
413+
xaxis_ticktext = dendro['layout']['xaxis'].pop('ticktext')
414+
self.assertEqual(xaxis_ticktext[0], 'John')
415+
416+
# this is actually a bit clearer when debugging tests.
417+
self.assert_dict_equal(dendro['data'][0], expected_dendro['data'][0])
418+
self.assert_dict_equal(dendro['data'][1], expected_dendro['data'][1])
419+
self.assert_dict_equal(dendro['data'][2], expected_dendro['data'][2])
420+
self.assert_dict_equal(dendro['data'][3], expected_dendro['data'][3])
421+
422+
self.assert_dict_equal(dendro['layout'], expected_dendro['layout'])
335423

336424
def test_dendrogram_orientation(self):
337425
X = np.random.rand(5, 5)

0 commit comments

Comments
 (0)