10000 change TraceFactory to FigureFactory · skytree-brian/plotly.py@dcc1028 · GitHub
[go: up one dir, main page]

Skip to content

Commit dcc1028

Browse files
committed
change TraceFactory to FigureFactory
- Remove `TraceFactory()` - Add `create_quiver`, `create_streamline` and all validation methods to `FigureFactory` - add layout dict (with `hovermode` set to closest) to `create_quiver` and `create_streamline` and return fig - update docstrings to reflect these changes - update TraceFactory tests -> FigureFactory tests
1 parent 4640072 commit dcc1028

File tree

6 files changed

+965
-1037
lines changed

6 files changed

+965
-1037
lines changed

plotly/tests/test_core/test_tools/test_TraceFactory.py

Lines changed: 0 additions & 90 deletions
This file was deleted.

plotly/tests/test_core/test_tools/test_figure_factory.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,115 @@
99
from plotly.graph_objs import graph_objs
1010

1111

12+
class TestQuiver(TestCase):
13+
14+
def test_unequal_xy_length(self):
15+
16+
# check: PlotlyError if x and y are not the same length
17+
18+
kwargs = {'x': [1, 2], 'y': [1], 'u': [1, 2], 'v': [1, 2]}
19+
self.assertRaises(PlotlyError, tls.FigureFactory.create_quiver,
20+
**kwargs)
21+
22+
def test_wrong_scale(self):
23+
24+
# check: ValueError if scale is <= 0
25+
26+
kwargs = {'x': [1, 2], 'y': [1, 2],
27+
'u': [1, 2], 'v': [1, 2],
28+
'scale': -1}
29+
self.assertRaises(ValueError, tls.FigureFactory.create_quiver,
30+
**kwargs)
31+
32+
kwargs = {'x': [1, 2], 'y': [1, 2],
33+
'u': [1, 2], 'v': [1, 2],
34+
'scale': 0}
35+
self.assertRaises(ValueError, tls.FigureFactory.create_quiver,
36+
**kwargs)
37+
38+
def test_wrong_arrow_scale(self):
39+
40+
# check: ValueError if arrow_scale is <= 0
41+
42+
kwargs = {'x': [1, 2], 'y': [1, 2],
43+
'u': [1, 2], 'v': [1, 2],
44+
'arrow_scale': -1}
45+
self.assertRaises(ValueError, tls.FigureFactory.create_quiver,
46+
**kwargs)
47+
48+
kwargs = {'x': [1, 2], 'y': [1, 2],
49+
'u': [1, 2], 'v': [1, 2],
50+
'arrow_scale': 0}
51+
self.assertRaises(ValueError, tls.FigureFactory.create_quiver,
52+
**kwargs)
53+
54+
def test_one_arrow(self):
55+
56+
# we should be able to create a single arrow using create_quiver
57+
58+
quiver = tls.FigureFactory.create_quiver(x=[1], y=[1],
59+
u=[1], v=[1],
60+
scale=1)
61+
expected_quiver = {
62+
'data': [{'mode': 'lines',
63+
'type': u'scatter',
64+
'x': [1, 2, None, 1.820698256761928, 2,
65+
1.615486170766527, None],
66+
'y': [1, 2, None, 1.615486170766527, 2,
67+
1.820698256761928, None]}],
68+
'layout': {'hovermode': 'closest'}}
69+
self.assertEqual(quiver, expected_quiver)
70+
71+
def test_more_kwargs(self):
72+
73+
# we should be able to create 2 arrows and change the arrow_scale,
74+
# angle, and arrow using create_quiver
75+
76+
quiver = tls.FigureFactory.create_quiver(x=[1, 2],
77+
y=[1, 2],
78+
u=[math.cos(1),
79+
math.cos(2)],
80+
v=[math.sin(1),
81+
math.sin(2)],
82+
arrow_scale=.4,
83+
angle=math.pi / 6,
84+
line=graph_objs.Line(color='purple',
85+
width=3))
86+
expected_quiver = {'data': [{'line': {'color': 'purple', 'width': 3},
87+
'mode': 'lines',
88+
'type': u'scatter',
89+
'x': [1,
90+
1.0540302305868139,
91+
None,
92+
2,
93+
1.9583853163452858,
94+
None,
95+
1.052143029378767,
96+
1.0540302305868139,
97+
1.0184841899864512,
98+
None,
99+
1.9909870141679737,
100+
1.9583853163452858,
101+
1.9546151170949464,
102+
None],
103+
'y': [1,
104+
1.0841470984807897,
105+
None,
106+
2,
107+
2.0909297426825684,
108+
None,
109+
1.044191642387781,
110+
1.0841470984807897,
111+
1.0658037346225067,
112+
None,
113+
2.0677536925644366,
114+
2.0909297426825684,
115+
2.051107819102551,
116+
None]}],
117+
'layout': {'hovermode': 'closest'}}
118+
self.assertEqual(quiver, expected_quiver)
119+
120+
12121
class TestFinanceCharts(TestCase):
13122

14123
def test_unequal_ohlc_length(self):

plotly/tests/test_core/test_tools/test_trace_factory.py

Lines changed: 0 additions & 103 deletions
This file was deleted.

0 commit comments

Comments
 (0)
0