26
26
# IMGCOMP_TOLERANCE = 7.0 # this works fine for linux
27
27
IMGCOMP_TOLERANCE = 11.0 # required for a windows pass. (really 10.25 may do it).
28
28
29
- def _get_scaled_down_dataset (bolldata ):
29
+ def _get_data_subset (bolldata , scaled_down = False ):
30
30
start = int (0.2 * len (bolldata ))
31
31
end = 2 * start
32
32
df = bolldata .iloc [start :end ]
33
+ if not scaled_down :
34
+ return df
33
35
scaled_down_data = df / df ['Close' ].mean ()
34
36
scaled_down_data -= 0.9 * scaled_down_data ['Low' ].min ()
35
37
return scaled_down_data
36
38
39
+ def _get_file_names (id ):
40
+ fname = base + id + '.png'
41
+ tname = os .path .join (tdir ,fname )
42
+ rname = os .path .join (refd ,fname )
43
+ return fname ,tname ,rname
37
44
38
- def test_fill_between01 (bolldata ):
45
+ def _report_file_sizes (tname ,rname ):
46
+ tsize = os .path .getsize (tname )
47
+ print (glob .glob (tname ),'[' ,tsize ,'bytes' ,']' )
48
+ rsize = os .path .getsize (rname )
49
+ print (glob .glob (rname ),'[' ,rsize ,'bytes' ,']' )
39
50
40
- scaled_down_data = _get_scaled_down_dataset (bolldata )
41
51
42
- fname = base + '01.png'
43
- tname = os .path .join (tdir ,fname )
44
- rname = os .path .join (refd ,fname )
52
+ def test_fill_between01 (bolldata ):
53
+
54
+ scaled_down_data = _get_data_subset (bolldata ,True )
55
+ fname ,tname ,rname = _get_file_names ('01' )
45
56
46
57
mpf .plot (scaled_down_data ,figscale = 0.7 ,
47
58
fill_between = scaled_down_data ['Close' ].values ,
48
59
savefig = tname )
49
60
50
- tsize = os .path .getsize (tname )
51
- print (glob .glob (tname ),'[' ,tsize ,'bytes' ,']' )
52
-
53
- rsize = os .path .getsize (rname )
54
- print (glob .glob (rname ),'[' ,rsize ,'bytes' ,']' )
61
+ _report_file_sizes (tname ,rname )
55
62
56
63
result = compare_images (rname ,tname ,tol = IMGCOMP_TOLERANCE )
57
64
if result is not None :
@@ -60,54 +67,87 @@ def test_fill_between01(bolldata):
60
67
61
68
def test_fill_between02 (bolldata ):
62
69
63
- scaled_down_data = _get_scaled_down_dataset (bolldata )
64
-
65
- fname = base + '02.png'
66
- tname = os .path .join (tdir ,fname )
67
- rname = os .path .join (refd ,fname )
70
+ scaled_down_data = _get_data_subset (bolldata ,True )
71
+ fname ,tname ,rname = _get_file_names ('02' )
68
72
69
73
mpf .plot (scaled_down_data ,figscale = 0.7 ,
70
74
fill_between = {'y1' :scaled_down_data ['Close' ].values ,'alpha' :0.75 },
71
75
savefig = tname )
72
76
73
- tsize = os .path .getsize (tname )
74
- print (glob .glob (tname ),'[' ,tsize ,'bytes' ,']' )
77
+ _report_file_sizes (tname ,rname )
75
78
76
- rsize = os .path .getsize (rname )
77
- print (glob .glob (rname ),'[' ,rsize ,'bytes' ,']' )
79
+ result = compare_images (rname ,tname ,tol = IMGCOMP_TOLERANCE )
80
+ if result is not None :
81
+ print ('result=' ,result )
82
+ assert result is None
83
+
84
+ def test_fill_between03 (bolldata ):
85
+
86
+ df = _get_data_subset (bolldata )
87
+ fname ,tname ,rname = _get_file_names ('03' )
88
+
89
+ mpf .plot (df ,figscale = 0.7 ,
90
+ fill_between = dict (y1 = df ['Close' ].mean (),
91
+ y2 = df ['Close' ].values ,
92
+ alpha = 0.67 ),
93
+ type = 'candle' ,style = 'yahoo' ,savefig = tname )
94
+
95
+ _report_file_sizes (tname ,rname )
78
96
79
97
result = compare_images (rname ,tname ,tol = IMGCOMP_TOLERANCE )
80
98
if result is not None :
81
99
print ('result=' ,result )
82
100
assert result is None
83
101
102
+ def test_fill_between04 (bolldata ):
103
+
104
+ df = _get_data_subset (bolldata )
105
+ fname ,tname ,rname = _get_file_names ('04' )
106
+
107
+ fb_above = dict (y1 = df ['Close' ].mean (),
108
+ y2 = df ['Close' ].values ,
109
+ alpha = 0.5 ,
110
+ color = 'lime' ,
111
+ where = ((df ['Close' ] > df ['Close' ].mean ()).values )
112
+ )
113
+
114
+ fb_below = dict (y1 = df ['Close' ].mean (),
115
+ y2 = df ['Close' ].values ,
116
+ alpha = 0.5 ,
117
+ color = 'magenta' ,
118
+ where = ((df ['Close' ] < df ['Close' ].mean ()).values )
119
+ )
120
+
121
+ mpf .plot (df ,figscale = 0.7 ,
122
+ fill_between = [fb_above ,fb_below ],
123
+ type = 'candle' ,style = 'yahoo' ,savefig = tname )
124
+
125
+ _report_file_sizes (tname ,rname )
126
+
127
+ result = compare_images (rname ,tname ,tol = IMGCOMP_TOLERANCE )
128
+ if result is not None :
129
+ print ('result=' ,result )
130
+
131
+ def test_fill_between05 (bolldata ):
132
+
133
+ df = _get_data_subset (bolldata )
134
+ fname ,tname ,rname = _get_file_names ('05' )
135
+
136
+ mpf .plot (df ,figscale = 0.7 ,
137
+ fill_between = dict (y1 = df ['Low' ].values ,
138
+ y2 = df ['High' ].values ,
139
+ alpha = 0.33 ),
140
+ type = 'candle' ,style = 'yahoo' ,savefig = tname )
141
+
142
+ _report_file_sizes (tname ,rname )
143
+
144
+ result = compare_images (rname ,tname ,tol = IMGCOMP_TOLERANCE )
145
+ if result is not None :
146
+ print ('result=' ,result )
147
+ assert result is None
148
+
149
+
84
150
85
- ## import pandas as pd
86
- ##
87
- ## # ### Read in daily data for the S&P 500 from November of 2019
88
- ##
89
- ## daily = pd.read_csv('data/SP500_NOV2019_Hist.csv',index_col=0,parse_dates=True)
90
- ## daily.index.name = 'Date'
91
- ## daily.shape
92
- ## daily.head(3)
93
- ##
94
- ## import mplfinance as mpf
95
- ## mpf.__version__
96
- ##
97
- ## print('''
98
- ##
99
- ## A single y-value or series **assumes** we fill between ZERO and that single y-value or series.
100
- ##
101
- ## Therefore, scale down the data, close to zero, so that we can demonstrate specifying
102
- ## a single y-value, or single y-series for fill_between:
103
- ##
104
- ## ''')
105
- ## scaled_down_data = (daily/3000)-1.0
106
- ##
107
- ## mpf.plot(scaled_down_data,figscale=0.7)
108
- ## mpf.plot(scaled_down_data,figscale=0.7,fill_between=0.03)
109
- ## mpf.plot(scaled_down_data,figscale=0.7,fill_between=scaled_down_data['Close'].values)
110
- ##
111
151
## print('''
112
152
##
113
153
## Use a dict to specify two y values, or two series, (y1 and y2) for `fill_between`:
0 commit comments