seolpyo-mplchart 0.0.2__tar.gz → 0.0.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of seolpyo-mplchart might be problematic. Click here for more details.
- {seolpyo_mplchart-0.0.2/seolpyo_mplchart.egg-info → seolpyo_mplchart-0.0.5}/PKG-INFO +14 -4
- seolpyo_mplchart-0.0.5/README.md +20 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/pyproject.toml +6 -6
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/cursor.py +3 -3
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/draw.py +9 -9
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/slider.py +13 -5
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/utils.py +2 -2
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5/seolpyo_mplchart.egg-info}/PKG-INFO +14 -4
- seolpyo_mplchart-0.0.5/seolpyo_mplchart.egg-info/requires.txt +2 -0
- seolpyo_mplchart-0.0.2/README.md +0 -10
- seolpyo_mplchart-0.0.2/seolpyo_mplchart.egg-info/requires.txt +0 -2
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/MANIFEST.in +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/__init__.py +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/base.py +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/data/apple.txt +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/data/samsung.txt +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart/test.py +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart.egg-info/SOURCES.txt +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart.egg-info/dependency_links.txt +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart.egg-info/top_level.txt +0 -0
- {seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/setup.cfg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: seolpyo-mplchart
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary: Fast candlestick chart using Python.
|
|
3
|
+
Version: 0.0.5
|
|
4
|
+
Summary: Fast candlestick chart using Python. Includes navigator, slider, navigation, and text information display functions
|
|
5
5
|
Author-email: white-seolpyo <white-seolpyo@naver.com>
|
|
6
6
|
License: MIT License
|
|
7
7
|
Project-URL: Homepage, https://white.seolpyo.com/
|
|
@@ -22,8 +22,8 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
23
|
Requires-Python: >=3.11
|
|
24
24
|
Description-Content-Type: text/markdown
|
|
25
|
-
Requires-Dist: matplotlib>=3.
|
|
26
|
-
Requires-Dist: pandas>=2.
|
|
25
|
+
Requires-Dist: matplotlib>=3.7.0
|
|
26
|
+
Requires-Dist: pandas>=2.0.0
|
|
27
27
|
|
|
28
28
|
# Donation
|
|
29
29
|
Bitcoin: 1MKCHW8smDZv5DFMiVkA5G3DeXcMn871ZX
|
|
@@ -35,3 +35,13 @@ Ethereum: 0x1c5fb8a5e0b1153cd4116c91736bd16fabf83520
|
|
|
35
35
|
[English](https://white.seolpyo.com/entry/148/)
|
|
36
36
|
|
|
37
37
|
[한글](https://white.seolpyo.com/entry/147/)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# Sample
|
|
41
|
+

|
|
42
|
+
|
|
43
|
+

|
|
44
|
+
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+

|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Donation
|
|
2
|
+
Bitcoin: 1MKCHW8smDZv5DFMiVkA5G3DeXcMn871ZX
|
|
3
|
+
|
|
4
|
+
Ethereum: 0x1c5fb8a5e0b1153cd4116c91736bd16fabf83520
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Document
|
|
8
|
+
[English](https://white.seolpyo.com/entry/148/)
|
|
9
|
+
|
|
10
|
+
[한글](https://white.seolpyo.com/entry/147/)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# Sample
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+

|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+

|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
requires = [
|
|
3
3
|
"setuptools >= 65.0",
|
|
4
|
-
"matplotlib >= 3.
|
|
5
|
-
"pandas >= 2.
|
|
4
|
+
"matplotlib >= 3.7.0",
|
|
5
|
+
"pandas >= 2.0.0",
|
|
6
6
|
]
|
|
7
7
|
build-backend = "setuptools.build_meta"
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "seolpyo-mplchart"
|
|
11
|
-
version = "0.0.
|
|
11
|
+
version = "0.0.5"
|
|
12
12
|
dependencies = [
|
|
13
|
-
"matplotlib >= 3.
|
|
14
|
-
"pandas >= 2.
|
|
13
|
+
"matplotlib >= 3.7.0",
|
|
14
|
+
"pandas >= 2.0.0",
|
|
15
15
|
]
|
|
16
16
|
license = {text = "MIT License"}
|
|
17
|
-
description = "Fast candlestick chart using Python
|
|
17
|
+
description = "Fast candlestick chart using Python. Includes navigator, slider, navigation, and text information display functions"
|
|
18
18
|
readme = "README.md"
|
|
19
19
|
requires-python = ">= 3.11"
|
|
20
20
|
authors = [
|
|
@@ -331,8 +331,8 @@ class InfoMixin(LineMixin):
|
|
|
331
331
|
else: c = float_to_str(cd[0])
|
|
332
332
|
|
|
333
333
|
comd = divmod(compare, 1)
|
|
334
|
-
if comd[1]: com = f'{float_to_str(comd[0])} {Fraction(comd[1])}'
|
|
335
|
-
else: com = float_to_str(comd[0])
|
|
334
|
+
if comd[1]: com = f'{float_to_str(comd[0], plus=True)} {Fraction(comd[1])}'
|
|
335
|
+
else: com = float_to_str(comd[0], plus=True)
|
|
336
336
|
|
|
337
337
|
o = o.__round__(self.digit_price)
|
|
338
338
|
od = divmod(o, 1)
|
|
@@ -361,7 +361,7 @@ class InfoMixin(LineMixin):
|
|
|
361
361
|
)
|
|
362
362
|
else:
|
|
363
363
|
o, h, l, c = (float_to_str(o, self.digit_price), float_to_str(h, self.digit_price), float_to_str(l, self.digit_price), float_to_str(c, self.digit_price))
|
|
364
|
-
com = float_to_str(compare, self.digit_price)
|
|
364
|
+
com = float_to_str(compare, self.digit_price, plus=True)
|
|
365
365
|
|
|
366
366
|
text = self.candleformat.format(
|
|
367
367
|
dt,
|
|
@@ -54,7 +54,7 @@ class DataMixin(Base):
|
|
|
54
54
|
if k in _set_key: raise Exception(f'you can not set "self.{i}" value in {_set_key}.\nself.{i}={k!r}')
|
|
55
55
|
if i != 'date':
|
|
56
56
|
dtype = df[k].dtype
|
|
57
|
-
if not isinstance(dtype, np.dtypes.Float64DType): raise TypeError(f'Data column type must be "float64".(excluding "date" column)\ndf[{k!r}].dtype={dtype!r}')
|
|
57
|
+
if not isinstance(dtype, (np.dtypes.Float64DType, np.dtypes.Int64DType, np.dtypes.Float32DType, np.dtypes.Int32DType)): raise TypeError(f'Data column type must be "float64" or "int64" or "float32" or "int32".(excluding "date" column)\ndf[{k!r}].dtype={dtype!r}')
|
|
58
58
|
|
|
59
59
|
for i in self.list_ma: df[f'ma{i}'] = df[self.close].rolling(i).mean()
|
|
60
60
|
|
|
@@ -66,25 +66,25 @@ class DataMixin(Base):
|
|
|
66
66
|
df['vleft'] = df['x'] - volumewidth_half
|
|
67
67
|
df['vright'] = df['x'] + volumewidth_half
|
|
68
68
|
|
|
69
|
-
df['top'] = np.where(df[
|
|
70
|
-
df['top'] = np.where(df[
|
|
71
|
-
df['bottom'] = np.where(df[
|
|
72
|
-
df['bottom'] = np.where(df[
|
|
69
|
+
df['top'] = np.where(df[self.Open] <= df[self.close], df[self.close], df[self.Open])
|
|
70
|
+
df['top'] = np.where(df[self.close] < df[self.Open], df[self.Open], df[self.close])
|
|
71
|
+
df['bottom'] = np.where(df[self.Open] <= df[self.close], df[self.Open], df[self.close])
|
|
72
|
+
df['bottom'] = np.where(df[self.close] < df[self.Open], df[self.close], df[self.Open])
|
|
73
73
|
|
|
74
74
|
# 양봉
|
|
75
75
|
df.loc[:, ['facecolor', 'edgecolor']] = (self.color_up, self.color_up)
|
|
76
76
|
if self.color_up != self.color_down:
|
|
77
77
|
# 음봉
|
|
78
|
-
df.loc[df[
|
|
78
|
+
df.loc[df[self.close] < df[self.Open], ['facecolor', 'edgecolor']] = (self.color_down, self.color_down)
|
|
79
79
|
if self.color_up != self.color_flat:
|
|
80
80
|
# 보합
|
|
81
|
-
df.loc[df[
|
|
81
|
+
df.loc[df[self.close] == df[self.Open], ['facecolor', 'edgecolor']] = (self.color_flat, self.color_flat)
|
|
82
82
|
if self.color_up != self.color_up_down:
|
|
83
83
|
# 양봉(비우기)
|
|
84
|
-
df.loc[(df['facecolor'] == self.color_up) & (df[
|
|
84
|
+
df.loc[(df['facecolor'] == self.color_up) & (df[self.close] < df[self.close].shift(1)), 'facecolor'] = self.color_up_down
|
|
85
85
|
if self.color_down != self.color_down_up:
|
|
86
86
|
# 음봉(비우기)
|
|
87
|
-
df.loc[(df['facecolor'] == self.color_down) & (df[
|
|
87
|
+
df.loc[(df['facecolor'] == self.color_down) & (df[self.close].shift(1) < df[self.close]), ['facecolor']] = self.color_down_up
|
|
88
88
|
|
|
89
89
|
self.df = df
|
|
90
90
|
return
|
|
@@ -329,7 +329,7 @@ class LimMixin(DrawMixin):
|
|
|
329
329
|
|
|
330
330
|
class SimpleMixin(LimMixin):
|
|
331
331
|
simpler = False
|
|
332
|
-
limit_volume =
|
|
332
|
+
limit_volume = 1_500
|
|
333
333
|
|
|
334
334
|
def __init__(self, *args, **kwargs):
|
|
335
335
|
super().__init__(*args, **kwargs)
|
|
@@ -351,7 +351,7 @@ class SimpleMixin(LimMixin):
|
|
|
351
351
|
seg = self.df[['x', self.high, self.low]].agg(get_wickline, axis=1)
|
|
352
352
|
self.blitcandle.set_segments(seg)
|
|
353
353
|
self.blitcandle.set_edgecolor(self.df['edgecolor'])
|
|
354
|
-
self.priceline.set_verts([self.df[['x', self.close]].apply(tuple, axis=1).
|
|
354
|
+
self.priceline.set_verts(pd.array([self.df[['x', self.close]].apply(tuple, axis=1).to_list()]))
|
|
355
355
|
|
|
356
356
|
volmax = self.df[self.volume].max()
|
|
357
357
|
l = self.df.__len__()
|
|
@@ -381,12 +381,20 @@ class SimpleMixin(LimMixin):
|
|
|
381
381
|
self.ax_price.xaxis.draw(renderer)
|
|
382
382
|
self.ax_price.yaxis.draw(renderer)
|
|
383
383
|
|
|
384
|
-
|
|
384
|
+
left, right = self._navcoordinate
|
|
385
|
+
Range = right - left
|
|
386
|
+
if self.simpler:
|
|
387
|
+
if Range < 1_000: self.blitcandle.draw(renderer)
|
|
388
|
+
else: self.priceline.draw(renderer)
|
|
385
389
|
elif self.candle_on_ma:
|
|
386
390
|
self.macollection.draw(renderer)
|
|
387
|
-
self.
|
|
391
|
+
if 2_500 < Range: self.priceline.draw(renderer)
|
|
392
|
+
elif 800 < Range: self.blitcandle.draw(renderer)
|
|
393
|
+
else: self.candlecollection.draw(renderer)
|
|
388
394
|
else:
|
|
389
|
-
self.
|
|
395
|
+
if 2_500 < Range: self.priceline.draw(renderer)
|
|
396
|
+
elif 800 < Range: self.blitcandle.draw(renderer)
|
|
397
|
+
else: self.candlecollection.draw(renderer)
|
|
390
398
|
self.macollection.draw(renderer)
|
|
391
399
|
|
|
392
400
|
self.ax_volume.xaxis.draw(renderer)
|
|
@@ -5,9 +5,9 @@ def convert_num(num):
|
|
|
5
5
|
return int(num)
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
def float_to_str(num: float, digit=0):
|
|
8
|
+
def float_to_str(num: float, digit=0, plus=False):
|
|
9
9
|
num.__round__(digit)
|
|
10
|
-
text = f'{num:,.{digit}f}'
|
|
10
|
+
text = f'{num:+,.{digit}f}' if plus else f'{num:,.{digit}f}'
|
|
11
11
|
return text
|
|
12
12
|
|
|
13
13
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: seolpyo-mplchart
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary: Fast candlestick chart using Python.
|
|
3
|
+
Version: 0.0.5
|
|
4
|
+
Summary: Fast candlestick chart using Python. Includes navigator, slider, navigation, and text information display functions
|
|
5
5
|
Author-email: white-seolpyo <white-seolpyo@naver.com>
|
|
6
6
|
License: MIT License
|
|
7
7
|
Project-URL: Homepage, https://white.seolpyo.com/
|
|
@@ -22,8 +22,8 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
23
|
Requires-Python: >=3.11
|
|
24
24
|
Description-Content-Type: text/markdown
|
|
25
|
-
Requires-Dist: matplotlib>=3.
|
|
26
|
-
Requires-Dist: pandas>=2.
|
|
25
|
+
Requires-Dist: matplotlib>=3.7.0
|
|
26
|
+
Requires-Dist: pandas>=2.0.0
|
|
27
27
|
|
|
28
28
|
# Donation
|
|
29
29
|
Bitcoin: 1MKCHW8smDZv5DFMiVkA5G3DeXcMn871ZX
|
|
@@ -35,3 +35,13 @@ Ethereum: 0x1c5fb8a5e0b1153cd4116c91736bd16fabf83520
|
|
|
35
35
|
[English](https://white.seolpyo.com/entry/148/)
|
|
36
36
|
|
|
37
37
|
[한글](https://white.seolpyo.com/entry/147/)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# Sample
|
|
41
|
+

|
|
42
|
+
|
|
43
|
+

|
|
44
|
+
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+

|
seolpyo_mplchart-0.0.2/README.md
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seolpyo_mplchart-0.0.2 → seolpyo_mplchart-0.0.5}/seolpyo_mplchart.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|