MatplotLibAPI 3.0.2__py3-none-any.whl → 3.0.5__py3-none-any.whl

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.
MatplotLibAPI/Bubble.py CHANGED
@@ -15,9 +15,7 @@ BUBBLE_STYLE_TEMPLATE = StyleTemplate(
15
15
  "y": percent_formatter,
16
16
  "label": string_formatter,
17
17
  "z": bmk_formatter},
18
- yscale="log",
19
- y_ticks=8,
20
- x_ticks=8
18
+ yscale="log"
21
19
  )
22
20
 
23
21
 
@@ -6,7 +6,7 @@ import pandas as pd
6
6
  from .Bubble import plot_bubble, BUBBLE_STYLE_TEMPLATE
7
7
  from .Table import plot_table
8
8
  from typing import Optional, Tuple
9
- from .Style import StyleTemplate, _validate_panda,format_func
9
+ from .Style import StyleTemplate, _validate_panda, format_func
10
10
 
11
11
 
12
12
  def plot_composite_bubble(
@@ -19,18 +19,27 @@ def plot_composite_bubble(
19
19
  style: StyleTemplate = BUBBLE_STYLE_TEMPLATE,
20
20
  max_values: int = 50,
21
21
  center_to_mean: bool = False,
22
+ filter_by:Optional[str] = None,
22
23
  sort_by: Optional[str] = None,
23
24
  ascending: bool = False,
24
25
  table_rows: int = 10,
25
26
  figsize: Tuple[float, float] = (19.2, 10.8)) -> Figure:
26
27
 
27
28
  _validate_panda(pd_df, cols=[label, x, y, z], sort_by=sort_by)
28
- style.format_funcs=format_func(style.format_funcs,label=label,x=x,y=y)
29
+
30
+ if not sort_by:
31
+ sort_by = z
32
+ if not filter_by:
33
+ filter_by = z
34
+ plot_df = pd_df.sort_values(by=filter_by,
35
+ ascending=ascending)[[label, x, y, z]].head(max_values)
36
+ style.format_funcs = format_func(
37
+ style.format_funcs, label=label, x=x, y=y, z=z)
29
38
  fig = plt.figure(figsize=figsize)
30
39
  fig.patch.set_facecolor("black")
31
40
  grid = plt.GridSpec(2, 2, height_ratios=[2, 1], width_ratios=[1, 1])
32
41
  ax = fig.add_subplot(grid[0, 0:])
33
- ax = plot_bubble(pd_df=pd_df,
42
+ ax = plot_bubble(pd_df=plot_df,
34
43
  label=label,
35
44
  x=x,
36
45
  y=y,
@@ -54,7 +63,7 @@ def plot_composite_bubble(
54
63
 
55
64
  ax2 = fig.add_subplot(grid[1, 0])
56
65
  ax2 = plot_table(
57
- pd_df=pd_df,
66
+ pd_df=plot_df,
58
67
  cols=[label, z, y, x],
59
68
  title=f"Top {table_rows}",
60
69
  ax=ax2,
@@ -65,7 +74,7 @@ def plot_composite_bubble(
65
74
  )
66
75
  ax3 = fig.add_subplot(grid[1, 1])
67
76
  ax3 = plot_table(
68
- pd_df=pd_df,
77
+ pd_df=plot_df,
69
78
  cols=[label, z, y, x],
70
79
  title=f"Worst {table_rows}",
71
80
  ax=ax3,
@@ -5,7 +5,7 @@ import pandas as pd
5
5
  import matplotlib.pyplot as plt
6
6
  from matplotlib.axes import Axes
7
7
  import seaborn as sns
8
- from .Style import DynamicFuncFormatter, StyleTemplate, string_formatter, _validate_panda, bmk_formatter,format_func
8
+ from .Style import DynamicFuncFormatter, StyleTemplate, string_formatter, _validate_panda, bmk_formatter, format_func
9
9
  from typing import Optional
10
10
 
11
11
  TIMESERIE_STYLE_TEMPLATE = StyleTemplate(
@@ -15,20 +15,19 @@ TIMESERIE_STYLE_TEMPLATE = StyleTemplate(
15
15
 
16
16
  # region Line
17
17
 
18
-
19
18
  def plot_timeserie(pd_df: pd.DataFrame,
20
19
  label: str,
21
20
  x: str,
22
21
  y: str,
23
22
  title: Optional[str] = None,
24
23
  style: StyleTemplate = TIMESERIE_STYLE_TEMPLATE,
24
+ max_values: int = 100,
25
25
  sort_by: Optional[str] = None,
26
26
  ascending: bool = False,
27
27
  ax: Optional[Axes] = None) -> Axes:
28
28
 
29
29
  _validate_panda(pd_df, cols=[label, x, y], sort_by=sort_by)
30
- style.format_funcs=format_func(style.format_funcs,label=label,x=x,y=y)
31
-
30
+ style.format_funcs = format_func(style.format_funcs, label=label, x=x, y=y)
32
31
 
33
32
  df = pd_df[[label, x, y]].sort_values(by=[label, x])
34
33
  df[x] = pd.to_datetime(df[x])
@@ -0,0 +1,59 @@
1
+ from typing import List, Optional
2
+ import pandas as pd
3
+ import plotly.graph_objects as go
4
+ from .Style import DynamicFuncFormatter, StyleTemplate, generate_ticks, string_formatter, _validate_panda, percent_formatter, format_func
5
+
6
+ TREEMAP_STYLE_TEMPLATE = StyleTemplate(
7
+ background_color='black',
8
+ fig_border='darkgrey',
9
+ font_color='white',
10
+ palette='magma',
11
+ format_funcs={"y": percent_formatter,
12
+ "label": string_formatter}
13
+ )
14
+
15
+
16
+ def plot_treemap(pd_df: pd.DataFrame,
17
+ path: str,
18
+ values: str,
19
+ style: StyleTemplate = TREEMAP_STYLE_TEMPLATE,
20
+ title: Optional[str] = None,
21
+ color: Optional[str] = None,
22
+ sort_by: Optional[str] = None,
23
+ ascending: bool = False,
24
+ max_values: int = 100,
25
+ fig: Optional[go.Figure] = None) -> go.Figure:
26
+ cols = [path, values]
27
+ if color:
28
+ cols.append(color)
29
+ _validate_panda(df, cols=cols, sort_by=sort_by)
30
+ if not sort_by:
31
+ sort_by = values
32
+ df = pd_df.sort_values(by=sort_by, ascending=ascending)[
33
+ cols].head(max_values)
34
+ data = {"labels": df[path],
35
+ "parents": [""] * len(df),
36
+ "values": df[values],
37
+ "textinfo": "label",
38
+ "name": title}
39
+
40
+ if color:
41
+ df['color'] = df[color]
42
+
43
+ if not fig:
44
+ fig = go.Figure(data=data)
45
+ else:
46
+ fig.add_trace(go.Treemap(data))
47
+
48
+ fig.update_layout(
49
+ paper_bgcolor=style.background_color,
50
+ plot_bgcolor=style.background_color,
51
+ font=dict(color=style.font_color),
52
+ margin=dict(t=50, l=25, r=25, b=25))
53
+
54
+ # Apply color scale
55
+ fig.update_traces(
56
+ marker=dict(colorscale=style.palette)
57
+ )
58
+
59
+ return fig
MatplotLibAPI/__init__.py CHANGED
@@ -5,9 +5,10 @@ from .Timeserie import plot_timeserie
5
5
  from .Bubble import plot_bubble
6
6
  from .Network import plot_network
7
7
  from .Pivot import plot_pivotbar
8
+ from .Treemap import plot_treemap
8
9
  from .Composite import plot_composite_bubble
9
10
  from .pdAccessor import MatPlotLibAccessor
10
11
  from .Style import StyleTemplate
11
12
 
12
13
  __all__ = ["plot_bubble", "plot_timeserie", "plot_table", "plot_network",
13
- "plot_pivotbar", "plot_composite_bubble", "StyleTemplate", "MatPlotLibAccessor"]
14
+ "plot_pivotbar", "plot_treemap","plot_composite_bubble", "StyleTemplate", "MatPlotLibAccessor"]
@@ -1,17 +1,20 @@
1
1
 
2
2
  import logging
3
3
  import warnings
4
+
4
5
  from typing import Optional, List
6
+ import pandas as pd
7
+
5
8
  from matplotlib.axes import Axes
6
9
  from matplotlib.figure import Figure
7
- import pandas as pd
10
+ import plotly.graph_objects as go
8
11
  from .Style import StyleTemplate
9
12
  from .Bubble import plot_bubble, BUBBLE_STYLE_TEMPLATE
10
13
  from .Composite import plot_composite_bubble
11
- from .Timeserie import plot_timeserie,TIMESERIE_STYLE_TEMPLATE
14
+ from .Timeserie import plot_timeserie, TIMESERIE_STYLE_TEMPLATE
12
15
  from .Table import plot_table, TABLE_STYLE_TEMPLATE
13
- from .Network import (Graph)
14
-
16
+ from .Network import Graph
17
+ from .Treemap import plot_treemap, TREEMAP_STYLE_TEMPLATE
15
18
 
16
19
  warnings.filterwarnings('ignore')
17
20
  logging.getLogger().setLevel(logging.WARNING)
@@ -28,7 +31,7 @@ class MatPlotLibAccessor:
28
31
  x: str,
29
32
  y: str,
30
33
  z: str,
31
- title: str = "Test",
34
+ title: Optional[str] = None,
32
35
  style: StyleTemplate = BUBBLE_STYLE_TEMPLATE,
33
36
  max_values: int = 50,
34
37
  center_to_mean: bool = False,
@@ -47,14 +50,14 @@ class MatPlotLibAccessor:
47
50
  sort_by=sort_by,
48
51
  ascending=ascending)
49
52
 
50
- def plot_bubble_composite(self,
53
+ def plot_composite_bubble(self,
51
54
  label: str,
52
55
  x: str,
53
56
  y: str,
54
57
  z: str,
55
58
  title: Optional[str] = None,
56
59
  style: StyleTemplate = BUBBLE_STYLE_TEMPLATE,
57
- max_values: int = 50,
60
+ max_values: int = 100,
58
61
  center_to_mean: bool = False,
59
62
  sort_by: Optional[str] = None,
60
63
  ascending: bool = False) -> Figure:
@@ -88,24 +91,24 @@ class MatPlotLibAccessor:
88
91
  ascending=ascending)
89
92
 
90
93
  def plot_timeserie(self,
91
- label: str,
92
- x: str,
93
- y: str,
94
- title: Optional[str] = None,
95
- style: StyleTemplate = TIMESERIE_STYLE_TEMPLATE,
96
- max_values: int = 20,
97
- sort_by: Optional[str] = None,
98
- ascending: bool = False) -> Axes:
94
+ label: str,
95
+ x: str,
96
+ y: str,
97
+ title: Optional[str] = None,
98
+ style: StyleTemplate = TIMESERIE_STYLE_TEMPLATE,
99
+ max_values: int = 100,
100
+ sort_by: Optional[str] = None,
101
+ ascending: bool = False) -> Axes:
99
102
 
100
103
  return plot_timeserie(pd_df=self._obj,
101
- label=label,
102
- x=x,
103
- y=y,
104
- title=title,
105
- style=style,
106
- max_values=max_values,
107
- sort_by=sort_by,
108
- ascending=ascending)
104
+ label=label,
105
+ x=x,
106
+ y=y,
107
+ title=title,
108
+ style=style,
109
+ max_values=max_values,
110
+ sort_by=sort_by,
111
+ ascending=ascending)
109
112
 
110
113
  def plot_network(self,
111
114
  source: str = "source",
@@ -123,3 +126,22 @@ class MatPlotLibAccessor:
123
126
  weight=weight)
124
127
 
125
128
  return graph.plotX(title, style)
129
+
130
+ def plot_treemap(self,
131
+ path: str,
132
+ values: str,
133
+ style: StyleTemplate = TREEMAP_STYLE_TEMPLATE,
134
+ title: Optional[str] = None,
135
+ color: Optional[str] = None,
136
+ max_values: int = 100,
137
+ sort_by: Optional[str] = None,
138
+ ascending: bool = False) ->go.Figure:
139
+ return plot_treemap(pd_df=self._obj,
140
+ path=path,
141
+ values=values,
142
+ title=title,
143
+ style=style,
144
+ color=color,
145
+ max_values=max_values,
146
+ sort_by=sort_by,
147
+ ascending=ascending)
@@ -0,0 +1,15 @@
1
+ Metadata-Version: 2.1
2
+ Name: MatplotLibAPI
3
+ Version: 3.0.5
4
+ Requires-Python: >=3.7
5
+ Description-Content-Type: text/markdown
6
+ License-File: LICENSE
7
+ Requires-Dist: pandas
8
+ Requires-Dist: matplotlib
9
+ Requires-Dist: networkx
10
+ Requires-Dist: plotly
11
+ Requires-Dist: seaborn
12
+ Requires-Dist: scikit-learn
13
+
14
+ # MatplotLibAPI
15
+ Simple Wrapper
@@ -0,0 +1,15 @@
1
+ MatplotLibAPI/Bubble.py,sha256=2PIwL0stzFC7knqdMHBBm99DXPXtBJK-xmpxmVlInYw,3830
2
+ MatplotLibAPI/Composite.py,sha256=M_AaBdn9cfMIOGZBg4_twRS9VU9jbgS6cs9E5l3ObOQ,2763
3
+ MatplotLibAPI/Network.py,sha256=fq1-LfDKy3oC5JzqU7IyZudgR2plmziigjpm2TzEA3U,13286
4
+ MatplotLibAPI/Pivot.py,sha256=8jRYdlvw8otrJ1hYBAaKQJoN84xe-YfroXmgRLykMmQ,7162
5
+ MatplotLibAPI/Style.py,sha256=xtw71VWHSQEvts1nJdKR0c_9Rqef6EGkyyvgdTK5M7c,4632
6
+ MatplotLibAPI/Table.py,sha256=Az5uX-ViqzJPTBym4QnUzn5PD5LEsVzQ9WohcSDFcK4,1990
7
+ MatplotLibAPI/Timeserie.py,sha256=HRFHs_WzaZzLmWVVMBKVMP5M3oglsr1R9Ni53X7_HLI,3432
8
+ MatplotLibAPI/Treemap.py,sha256=diCx5270ENBObO3eWlLlpaHWUWcSgMT34vEwWTxTDAE,1799
9
+ MatplotLibAPI/__init__.py,sha256=PDobJg0sw7BjgSQk7p7kkjombghs3D_m-CCk2oeUt_s,506
10
+ MatplotLibAPI/pdAccessor.py,sha256=5duWsURQKgNuwCz1p0ge2GbAXHSHl8e38zJn6NSVAGg,5745
11
+ MatplotLibAPI-3.0.5.dist-info/LICENSE,sha256=hMErKLb6YZR3lRR5zr-vxeFkvY69QAaafgSpZ5-P1dQ,1067
12
+ MatplotLibAPI-3.0.5.dist-info/METADATA,sha256=icSnJdKd4E6mw4SKUPaTHg9QgsWfUiiRvMlrQUXAz10,319
13
+ MatplotLibAPI-3.0.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
14
+ MatplotLibAPI-3.0.5.dist-info/top_level.txt,sha256=MrzbBjDEW48Vb6YhQIqpFYGOhHzQnEIM5Qy2xy2iqew,14
15
+ MatplotLibAPI-3.0.5.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: MatplotLibAPI
3
- Version: 3.0.2
4
- Description-Content-Type: text/markdown
5
- License-File: LICENSE
6
-
7
- # MatplotLibAPI
8
- Simple Wrapper
@@ -1,14 +0,0 @@
1
- MatplotLibAPI/Bubble.py,sha256=aYw8qcYF_cXJzAU7tIi5Cn7Y-sRfR8Cvm5RivMvVd5E,3860
2
- MatplotLibAPI/Composite.py,sha256=1qP_9TEz58EDA-oEev21WfJh2mxAEVVkRqYsysvMw7E,2478
3
- MatplotLibAPI/Network.py,sha256=fq1-LfDKy3oC5JzqU7IyZudgR2plmziigjpm2TzEA3U,13286
4
- MatplotLibAPI/Pivot.py,sha256=8jRYdlvw8otrJ1hYBAaKQJoN84xe-YfroXmgRLykMmQ,7162
5
- MatplotLibAPI/Style.py,sha256=xtw71VWHSQEvts1nJdKR0c_9Rqef6EGkyyvgdTK5M7c,4632
6
- MatplotLibAPI/Table.py,sha256=Az5uX-ViqzJPTBym4QnUzn5PD5LEsVzQ9WohcSDFcK4,1990
7
- MatplotLibAPI/Timeserie.py,sha256=KOAK6cewddQWLFOFy98Db3BTNjWfv9TfJlPiJDybK84,3386
8
- MatplotLibAPI/__init__.py,sha256=-i49Ta56gER88f6R_BDOo-JiLc5UUGvxHg2aHdJv0PQ,457
9
- MatplotLibAPI/pdAccessor.py,sha256=OT03Z8V7ijWux0984IIuQegyobCSg_bhyGhtdejVs9I,4765
10
- MatplotLibAPI-3.0.2.dist-info/LICENSE,sha256=hMErKLb6YZR3lRR5zr-vxeFkvY69QAaafgSpZ5-P1dQ,1067
11
- MatplotLibAPI-3.0.2.dist-info/METADATA,sha256=H6N2R9VuSKlnIaB9Rp5z6ft3D7Xd-6AJBXP_MM3lJHg,151
12
- MatplotLibAPI-3.0.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
13
- MatplotLibAPI-3.0.2.dist-info/top_level.txt,sha256=MrzbBjDEW48Vb6YhQIqpFYGOhHzQnEIM5Qy2xy2iqew,14
14
- MatplotLibAPI-3.0.2.dist-info/RECORD,,