modusa 0.3.72__py3-none-any.whl → 0.3.74__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.
- modusa/tools/plotter.py +56 -1
- {modusa-0.3.72.dist-info → modusa-0.3.74.dist-info}/METADATA +1 -1
- {modusa-0.3.72.dist-info → modusa-0.3.74.dist-info}/RECORD +6 -6
- {modusa-0.3.72.dist-info → modusa-0.3.74.dist-info}/WHEEL +0 -0
- {modusa-0.3.72.dist-info → modusa-0.3.74.dist-info}/entry_points.txt +0 -0
- {modusa-0.3.72.dist-info → modusa-0.3.74.dist-info}/licenses/LICENSE.md +0 -0
modusa/tools/plotter.py
CHANGED
|
@@ -95,6 +95,14 @@ class Fig:
|
|
|
95
95
|
|
|
96
96
|
return curr_row
|
|
97
97
|
|
|
98
|
+
def _get_prev_row(self):
|
|
99
|
+
"""
|
|
100
|
+
Get the prev row where you can add arrows.
|
|
101
|
+
"""
|
|
102
|
+
prev_pow = self._axs[self._curr_row_idx - 1]
|
|
103
|
+
|
|
104
|
+
return prev_pow
|
|
105
|
+
|
|
98
106
|
def _get_new_color(self):
|
|
99
107
|
"""
|
|
100
108
|
Get a new color for different lines.
|
|
@@ -272,7 +280,7 @@ class Fig:
|
|
|
272
280
|
curr_row[0].grid(True, linestyle='--', linewidth=0.7, color="lightgray" ,alpha=0.6)
|
|
273
281
|
|
|
274
282
|
|
|
275
|
-
def add_matrix(self, M, y=None, x=None, c="
|
|
283
|
+
def add_matrix(self, M, y=None, x=None, c="viridis", o="upper", label=None, ylabel=None, ylim=None, yticks=None, yticklabels=None, xticks=None, xticklabels=None, cbar=True, grid=True, ax=None):
|
|
276
284
|
"""
|
|
277
285
|
Add matrix to the figure.
|
|
278
286
|
|
|
@@ -529,6 +537,53 @@ class Fig:
|
|
|
529
537
|
|
|
530
538
|
if grid is True:
|
|
531
539
|
curr_row[0].grid(True, linestyle='--', linewidth=0.7, color="lightgray" ,alpha=0.6)
|
|
540
|
+
|
|
541
|
+
from matplotlib.patches import Rectangle
|
|
542
|
+
import matplotlib.pyplot as plt
|
|
543
|
+
|
|
544
|
+
def add_arrow(self, xy, label, text_offset=(0, 0), c="r", fontsize=12, ax=None):
|
|
545
|
+
"""
|
|
546
|
+
Add an arrow pointing to a specific point with a boxed label at the tail.
|
|
547
|
+
|
|
548
|
+
Parameters
|
|
549
|
+
----------
|
|
550
|
+
xy : tuple[float, float]
|
|
551
|
+
- Target point (x, y) for the arrow head.
|
|
552
|
+
label : str
|
|
553
|
+
- Text label at the arrow tail.
|
|
554
|
+
text_offset : tuple[float, float]
|
|
555
|
+
- Offset (dx, dy) for label position from arrow tail.
|
|
556
|
+
c : str
|
|
557
|
+
- Color for arrow and text.
|
|
558
|
+
- Default: "r" for red
|
|
559
|
+
fontsize : int
|
|
560
|
+
- Font size of the label text.
|
|
561
|
+
- Default: 12
|
|
562
|
+
ax : int | None
|
|
563
|
+
- Which specific axis to plot (1, 2, 3, ...).
|
|
564
|
+
- If None, uses the current row.
|
|
565
|
+
|
|
566
|
+
Returns
|
|
567
|
+
-------
|
|
568
|
+
None
|
|
569
|
+
"""
|
|
570
|
+
curr_row = self._get_prev_row() if ax is None else self._axs[ax]
|
|
571
|
+
|
|
572
|
+
arrowprops = dict(arrowstyle="->", color=c, lw=2)
|
|
573
|
+
bbox = dict(boxstyle="round,pad=0.3", fc="white", ec=c, lw=1.2)
|
|
574
|
+
|
|
575
|
+
text_x, text_y = xy[0] + text_offset[0], xy[1] + text_offset[1]
|
|
576
|
+
|
|
577
|
+
curr_row[0].annotate(
|
|
578
|
+
label,
|
|
579
|
+
xy=xy, xycoords="data",
|
|
580
|
+
xytext=(text_x, text_y), textcoords="data",
|
|
581
|
+
arrowprops=arrowprops,
|
|
582
|
+
fontsize=fontsize,
|
|
583
|
+
color=c,
|
|
584
|
+
ha="center", va="center",
|
|
585
|
+
bbox=bbox
|
|
586
|
+
)
|
|
532
587
|
|
|
533
588
|
def add_legend(self, ypos=1.0):
|
|
534
589
|
"""
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
modusa-0.3.
|
|
2
|
-
modusa-0.3.
|
|
3
|
-
modusa-0.3.
|
|
4
|
-
modusa-0.3.
|
|
1
|
+
modusa-0.3.74.dist-info/METADATA,sha256=CoBn0MvvxeiFUbBHS7bALJWTBvOm4osnsFg7Uew2XEg,1436
|
|
2
|
+
modusa-0.3.74.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
|
|
3
|
+
modusa-0.3.74.dist-info/entry_points.txt,sha256=fmKpleVXj6CdaBVL14WoEy6xx7JQCs85jvzwTi3lePM,73
|
|
4
|
+
modusa-0.3.74.dist-info/licenses/LICENSE.md,sha256=JTaXAjx5awk76VArKCx5dUW8vmLEWsL_ZlR7-umaHbA,1078
|
|
5
5
|
modusa/.DS_Store,sha256=_gm6qJREwfMi8dE7n5S89_RG46u5t3xHyD-smNhtNoM,6148
|
|
6
6
|
modusa/__init__.py,sha256=RMIKAZZ27w1oh2UFMJvZQtQ-SluIQsac_3mSK_LaM30,277
|
|
7
7
|
modusa/config.py,sha256=bTqK4t00FZqERVITrxW_q284aDDJAa9aMSfFknfR-oU,280
|
|
@@ -50,7 +50,7 @@ modusa/tools/audio_player.py,sha256=GP04TWW4jBwQBjANkfR_cJtEy7cIhvbu8RTwnf9hD6E,
|
|
|
50
50
|
modusa/tools/audio_recorder.py,sha256=d2fVt0Sd2tlBdb2WlUs60K4N23zuxM3KUpQqX0ifPi8,2769
|
|
51
51
|
modusa/tools/base.py,sha256=C0ESJ0mIfjjRlAkRbSetNtMoOfS6IrHBjexRp3l_Mh4,1293
|
|
52
52
|
modusa/tools/math_ops.py,sha256=ZZ7U4DgqT7cOeE7_Lzi_Qq-48WYfwR9_osbZwTmE9eg,8690
|
|
53
|
-
modusa/tools/plotter.py,sha256=
|
|
53
|
+
modusa/tools/plotter.py,sha256=A_1GA-toJe6MjXiF8adfD9awE2EDQlTniEpy91yc4c8,22944
|
|
54
54
|
modusa/tools/youtube_downloader.py,sha256=hB_X8-7nOHXOlxg6vv3wyhBLoAsWyomrULP6_uCQL7s,1698
|
|
55
55
|
modusa/utils/.DS_Store,sha256=nLXMwF7QJNuglLI_Gk74F7vl5Dyus2Wd74Mgowijmdo,6148
|
|
56
56
|
modusa/utils/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
|
|
@@ -59,4 +59,4 @@ modusa/utils/excp.py,sha256=L9vhaGjKpv9viJYdmC9n5ndmk2GVbUBuFyZyhAQZmWY,906
|
|
|
59
59
|
modusa/utils/logger.py,sha256=K0rsnObeNKCxlNeSnVnJeRhgfmob6riB2uyU7h3dDmA,571
|
|
60
60
|
modusa/utils/np_func_cat.py,sha256=TyIFgRc6bARRMDnZxlVURO5Z0I-GWhxRONYyIv-Vwxs,1007
|
|
61
61
|
modusa/utils/plot.py,sha256=s_vNdxvKfwxEngvJPgrF1PcmxZNnNaaXPViHWjyjJ-c,5335
|
|
62
|
-
modusa-0.3.
|
|
62
|
+
modusa-0.3.74.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|