Skip to content

Commit f6a7eea

Browse files
implement scale candle_linewidths, and do so for hollow candles
1 parent 1fdab44 commit f6a7eea

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

src/mplfinance/_utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,8 @@ def _construct_hollow_candlestick_collections(dates, opens, highs, lows, closes,
555555

556556
wickcolor = _updown_colors(uc, dc, opens, closes, use_prev_close=True)
557557

558-
lw = config['_width_config']['candle_linewidth']
558+
# For hollow candles, we scale the candle linewidth up a little:
559+
lw = 1.25 * config['_width_config']['candle_linewidth']
559560

560561
rangeCollection = LineCollection(rangeSegments,
561562
colors=wickcolor,

src/mplfinance/_widths.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,26 @@ def _get_widths_df():
3131

3232
def _valid_scale_width_kwargs():
3333
vkwargs = {
34-
'ohlc' : { 'Default' : None,
35-
'Validator' : lambda value: isinstance(value,(float,int)) },
34+
'ohlc' : { 'Default' : None,
35+
'Validator' : lambda value: isinstance(value,(float,int)) },
3636

37-
'volume' : { 'Default' : None,
38-
'Validator' : lambda value: isinstance(value,(float,int)) },
37+
'volume' : { 'Default' : None,
38+
'Validator' : lambda value: isinstance(value,(float,int)) },
3939

40-
'candle' : { 'Default' : None,
41-
'Validator' : lambda value: isinstance(value,(float,int)) },
40+
'candle' : { 'Default' : None,
41+
'Validator' : lambda value: isinstance(value,(float,int)) },
4242

43-
'lines' : { 'Default' : None,
44-
'Validator' : lambda value: isinstance(value,(float,int)) },
43+
'lines' : { 'Default' : None,
44+
'Validator' : lambda value: isinstance(value,(float,int)) },
45+
46+
'volume_linewidth' : { 'Default' : None,
47+
'Validator' : lambda value: isinstance(value,(float,int)) },
48+
49+
'ohlc_linewidth' : { 'Default' : None,
50+
'Validator' : lambda value: isinstance(value,(float,int)) },
51+
52+
'candle_linewidth' : { 'Default' : None,
53+
'Validator' : lambda value: isinstance(value,(float,int)) },
4554
}
4655
_validate_vkwargs_dict(vkwargs)
4756
return vkwargs
@@ -120,7 +129,12 @@ def _determine_width_config( xdates, config ):
120129
width_config['candle_width'] *= scale['candle']
121130
if scale['lines'] is not None:
122131
width_config['line_width'] *= scale['lines']
123-
132+
if scale['volume_linewidth'] is not None:
133+
width_config['volume_linewidth'] *= scale['volume_linewidth']
134+
if scale['ohlc_linewidth'] is not None:
135+
width_config['ohlc_linewidth' ] *= scale['ohlc_linewidth']
136+
if scale['candle_linewidth'] is not None:
137+
width_config['candle_linewidth'] *= scale['candle_linewidth']
124138

125139
if config['update_width_config'] is not None:
126140

0 commit comments

Comments
 (0)