2626# IMGCOMP_TOLERANCE = 7.0 # this works fine for linux
2727IMGCOMP_TOLERANCE = 11.0 # required for a windows pass. (really 10.25 may do it).
2828
29- def _get_scaled_down_dataset (bolldata ):
29+ def _get_data_subset (bolldata , scaled_down = False ):
3030 start = int (0.2 * len (bolldata ))
3131 end = 2 * start
3232 df = bolldata .iloc [start :end ]
33+ if not scaled_down :
34+ return df
3335 scaled_down_data = df / df ['Close' ].mean ()
3436 scaled_down_data -= 0.9 * scaled_down_data ['Low' ].min ()
3537 return scaled_down_data
3638
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
3744
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' ,']' )
3950
40- scaled_down_data = _get_scaled_down_dataset (bolldata )
4151
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' )
4556
4657 mpf .plot (scaled_down_data ,figscale = 0.7 ,
4758 fill_between = scaled_down_data ['Close' ].values ,
4859 savefig = tname )
4960
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 )
5562
5663 result = compare_images (rname ,tname ,tol = IMGCOMP_TOLERANCE )
5764 if result is not None :
@@ -60,54 +67,87 @@ def test_fill_between01(bolldata):
6067
6168def test_fill_between02 (bolldata ):
6269
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' )
6872
6973 mpf .plot (scaled_down_data ,figscale = 0.7 ,
7074 fill_between = {'y1' :scaled_down_data ['Close' ].values ,'alpha' :0.75 },
7175 savefig = tname )
7276
73- tsize = os .path .getsize (tname )
74- print (glob .glob (tname ),'[' ,tsize ,'bytes' ,']' )
77+ _report_file_sizes (tname ,rname )
7578
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 )
7896
7997 result = compare_images (rname ,tname ,tol = IMGCOMP_TOLERANCE )
8098 if result is not None :
8199 print ('result=' ,result )
82100 assert result is None
83101
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+
84150
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- ##
111151## print('''
112152##
113153## Use a dict to specify two y values, or two series, (y1 and y2) for `fill_between`:
0 commit comments