From 58a0e0b893c5b1229bee723ce695384d5b137096 Mon Sep 17 00:00:00 2001 From: Daniel Goldfarb Date: Wed, 24 Aug 2022 19:15:44 -0400 Subject: [PATCH 1/4] fix linestyle validator --- src/mplfinance/plotting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mplfinance/plotting.py b/src/mplfinance/plotting.py index b3d4f341..0b446d3a 100644 --- a/src/mplfinance/plotting.py +++ b/src/mplfinance/plotting.py @@ -1165,7 +1165,7 @@ def _auto_secondary_y( panels, panid, ylo, yhi ): def _valid_addplot_kwargs(): - valid_linestyles = ('-','solid','--','dashed','-.','dashdot','.','dotted',None,' ','') + valid_linestyles = ('-','solid','--','dashed','-.','dashdot',':','dotted',None,' ','') valid_types = ('line','scatter','bar', 'ohlc', 'candle','step') valid_stepwheres = ('pre','post','mid') valid_edgecolors = ('face', 'none', None) From 2ea49e4fdc6dc017686f1b29190cefa7398a512e Mon Sep 17 00:00:00 2001 From: Daniel Goldfarb Date: Mon, 31 Oct 2022 20:41:27 -0400 Subject: [PATCH 2/4] check for whitespace when column not found; Issue #496 --- src/mplfinance/_arg_validators.py | 55 ++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/src/mplfinance/_arg_validators.py b/src/mplfinance/_arg_validators.py index d7398232..e3782fe9 100644 --- a/src/mplfinance/_arg_validators.py +++ b/src/mplfinance/_arg_validators.py @@ -30,21 +30,6 @@ def _check_and_prepare_data(data, config): if not isinstance(data.index,pd.core.indexes.datetimes.DatetimeIndex): raise TypeError('Expect data.index as DatetimeIndex') - if (len(data.index) > config['warn_too_much_data'] and - (config['type']=='candle' or config['type']=='ohlc' or config['type']=='hollow_and_filled') - ): - warnings.warn('\n\n ================================================================= '+ - '\n\n WARNING: YOU ARE PLOTTING SO MUCH DATA THAT IT MAY NOT BE'+ - '\n POSSIBLE TO SEE DETAILS (Candles, Ohlc-Bars, Etc.)'+ - '\n For more information see:'+ - '\n - https://github.com/matplotlib/mplfinance/wiki/Plotting-Too-Much-Data'+ - '\n '+ - '\n TO SILENCE THIS WARNING, set `type=\'line\'` in `mpf.plot()`'+ - '\n OR set kwarg `warn_too_much_data=N` where N is an integer '+ - '\n LARGER than the number of data points you want to plot.'+ - '\n\n ================================================================ ', - category=UserWarning) - # We will not be fully case-insensitive (since Pandas columns as NOT case-insensitive) # but because so many people have requested it, for the default column names we will # try both Capitalized and lower case: @@ -57,10 +42,22 @@ def _check_and_prepare_data(data, config): o, h, l, c, v = columns cols = [o, h, l, c] - if config['tz_localize']: - dates = mdates.date2num(data.index.tz_localize(None).to_pydatetime()) - else: # Just in case someone was depending on this bug (Issue 236) - dates = mdates.date2num(data.index.to_pydatetime()) + if config['volume'] != False: + expect_cols = columns + else: + expect_cols = cols + + for c in expect_cols: + if c not in data.columns: + for dc in data.columns: + if dc.strip() != dc: + warnings.warn('\n ================================================================= '+ + '\n Input DataFrame column name "'+dc+'" '+ + '\n contains leading and/or trailing whitespace.',category=UserWarning) + raise ValueError('Column "'+c+'" NOT FOUND in Input DataFrame!'+ + '\n CHECK that your column names are correct AND/OR'+ + '\n CHECK for leading or trailing blanks in your column names.') + opens = data[o].values highs = data[h].values lows = data[l].values @@ -75,6 +72,26 @@ def _check_and_prepare_data(data, config): if not all( isinstance(v,(float,int)) for v in data[col] ): raise ValueError('Data for column "'+str(col)+'" must be ALL float or int.') + if config['tz_localize']: + dates = mdates.date2num(data.index.tz_localize(None).to_pydatetime()) + else: # Just in case someone was depending on this bug (Issue 236) + dates = mdates.date2num(data.index.to_pydatetime()) + + if (len(data.index) > config['warn_too_much_data'] and + (config['type']=='candle' or config['type']=='ohlc' or config['type']=='hollow_and_filled') + ): + warnings.warn('\n\n ================================================================= '+ + '\n\n WARNING: YOU ARE PLOTTING SO MUCH DATA THAT IT MAY NOT BE'+ + '\n POSSIBLE TO SEE DETAILS (Candles, Ohlc-Bars, Etc.)'+ + '\n For more information see:'+ + '\n - https://github.com/matplotlib/mplfinance/wiki/Plotting-Too-Much-Data'+ + '\n '+ + '\n TO SILENCE THIS WARNING, set `type=\'line\'` in `mpf.plot()`'+ + '\n OR set kwarg `warn_too_much_data=N` where N is an integer '+ + '\n LARGER than the number of data points you want to plot.'+ + '\n\n ================================================================ ', + category=UserWarning) + return dates, opens, highs, lows, closes, volumes def _get_valid_plot_types(plottype=None): From d63f27f312783c9a695daf07593409fcc0e3582c Mon Sep 17 00:00:00 2001 From: Daniel Goldfarb Date: Mon, 31 Oct 2022 21:10:12 -0400 Subject: [PATCH 3/4] fix bug that was trashing "Close" values --- src/mplfinance/_arg_validators.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mplfinance/_arg_validators.py b/src/mplfinance/_arg_validators.py index e3782fe9..55c320b3 100644 --- a/src/mplfinance/_arg_validators.py +++ b/src/mplfinance/_arg_validators.py @@ -46,15 +46,15 @@ def _check_and_prepare_data(data, config): expect_cols = columns else: expect_cols = cols - - for c in expect_cols: - if c not in data.columns: + + for col in expect_cols: + if col not in data.columns: for dc in data.columns: if dc.strip() != dc: warnings.warn('\n ================================================================= '+ '\n Input DataFrame column name "'+dc+'" '+ '\n contains leading and/or trailing whitespace.',category=UserWarning) - raise ValueError('Column "'+c+'" NOT FOUND in Input DataFrame!'+ + raise ValueError('Column "'+col+'" NOT FOUND in Input DataFrame!'+ '\n CHECK that your column names are correct AND/OR'+ '\n CHECK for leading or trailing blanks in your column names.') From c7005ab66259df4341d4b8719b31a30fd79fb96f Mon Sep 17 00:00:00 2001 From: Daniel Goldfarb Date: Mon, 31 Oct 2022 21:11:54 -0400 Subject: [PATCH 4/4] bump version --- src/mplfinance/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mplfinance/_version.py b/src/mplfinance/_version.py index e16ebafe..52221d42 100644 --- a/src/mplfinance/_version.py +++ b/src/mplfinance/_version.py @@ -1,4 +1,4 @@ -version_info = (0, 12, 9, 'beta', 4) +version_info = (0, 12, 9, 'beta', 5) _specifier_ = {'alpha': 'a','beta': 'b','candidate': 'rc','final': ''}