modusa 0.3.96__py3-none-any.whl → 0.3.97__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/__init__.py +1 -1
- modusa/tools/plotter.py +18 -18
- {modusa-0.3.96.dist-info → modusa-0.3.97.dist-info}/METADATA +1 -1
- {modusa-0.3.96.dist-info → modusa-0.3.97.dist-info}/RECORD +7 -7
- {modusa-0.3.96.dist-info → modusa-0.3.97.dist-info}/WHEEL +0 -0
- {modusa-0.3.96.dist-info → modusa-0.3.97.dist-info}/entry_points.txt +0 -0
- {modusa-0.3.96.dist-info → modusa-0.3.97.dist-info}/licenses/LICENSE.md +0 -0
modusa/__init__.py
CHANGED
modusa/tools/plotter.py
CHANGED
|
@@ -765,7 +765,7 @@ def hill_plot(*args, labels=None, xlabel=None, ylabel=None, title=None, widths=0
|
|
|
765
765
|
parts = ax.violinplot(args, vert=False, showmeans=False, showmedians=False, widths=widths, bw_method=bw_method)
|
|
766
766
|
|
|
767
767
|
# Remove the default bar lines from violin plot
|
|
768
|
-
for key in [
|
|
768
|
+
for key in ["cbars", "cmins", "cmaxes", "cmedians"]:
|
|
769
769
|
if key in parts:
|
|
770
770
|
parts[key].set_visible(False)
|
|
771
771
|
|
|
@@ -774,7 +774,7 @@ def hill_plot(*args, labels=None, xlabel=None, ylabel=None, title=None, widths=0
|
|
|
774
774
|
verts = pc.get_paths()[0].vertices
|
|
775
775
|
y_center = i + 1 # Center y-position for this violin
|
|
776
776
|
|
|
777
|
-
if side ==
|
|
777
|
+
if side == "upper":
|
|
778
778
|
verts[:, 1] = np.maximum(verts[:, 1], y_center)
|
|
779
779
|
else: # 'lower'
|
|
780
780
|
verts[:, 1] = np.minimum(verts[:, 1], y_center)
|
|
@@ -804,37 +804,37 @@ def hill_plot(*args, labels=None, xlabel=None, ylabel=None, title=None, widths=0
|
|
|
804
804
|
# Find y-position on violin curve for median
|
|
805
805
|
median_mask = np.abs(verts[:, 0] - median_val) < (np.ptp(x) * 0.01)
|
|
806
806
|
if median_mask.any():
|
|
807
|
-
median_y = np.max(verts[median_mask, 1]) if side ==
|
|
807
|
+
median_y = np.max(verts[median_mask, 1]) if side == "upper" else np.min(verts[median_mask, 1])
|
|
808
808
|
else:
|
|
809
|
-
median_y = i + widths/2 if side ==
|
|
809
|
+
median_y = i + widths/2 if side == "upper" else i - widths/2
|
|
810
810
|
|
|
811
811
|
# Find y-position on violin curve for mean
|
|
812
812
|
mean_mask = np.abs(verts[:, 0] - mean_val) < (np.ptp(x) * 0.01)
|
|
813
813
|
if mean_mask.any():
|
|
814
|
-
mean_y = np.max(verts[mean_mask, 1]) if side ==
|
|
814
|
+
mean_y = np.max(verts[mean_mask, 1]) if side == "upper" else np.min(verts[mean_mask, 1])
|
|
815
815
|
else:
|
|
816
|
-
mean_y = i + widths/2 if side ==
|
|
816
|
+
mean_y = i + widths/2 if side == "upper" else i - widths/2
|
|
817
817
|
|
|
818
818
|
# Triangle offset from curve
|
|
819
819
|
triangle_offset = 0.05
|
|
820
820
|
|
|
821
821
|
# Mean marker - triangle below curve pointing up
|
|
822
|
-
ax.scatter(mean_val, mean_y - triangle_offset, marker=
|
|
823
|
-
facecolor=colors[i-1], edgecolor=
|
|
822
|
+
ax.scatter(mean_val, mean_y - triangle_offset, marker="^", s=30,
|
|
823
|
+
facecolor=colors[i-1], edgecolor="black",
|
|
824
824
|
linewidth=0.5, zorder=6,
|
|
825
|
-
label=
|
|
825
|
+
label="Mean" if i == 1 else "")
|
|
826
826
|
|
|
827
827
|
# Mean value text - below the triangle
|
|
828
|
-
ax.text(mean_val, mean_y - triangle_offset - 0.05, f
|
|
828
|
+
ax.text(mean_val, mean_y - triangle_offset - 0.05, f"mean: {mean_val:.2f}", ha="center", va="top", fontsize=8, fontweight="bold", color="black", zorder=7)
|
|
829
829
|
|
|
830
830
|
# Median marker - triangle above curve pointing down
|
|
831
|
-
ax.scatter(median_val, median_y + triangle_offset, marker=
|
|
832
|
-
facecolor=colors[i-1], edgecolor=
|
|
831
|
+
ax.scatter(median_val, median_y + triangle_offset, marker="v", s=30,
|
|
832
|
+
facecolor=colors[i-1], edgecolor="black",
|
|
833
833
|
linewidth=0.5, zorder=6,
|
|
834
|
-
label=
|
|
834
|
+
label="Median" if i == 1 else "")
|
|
835
835
|
|
|
836
836
|
# Median value text - above the triangle
|
|
837
|
-
ax.text(median_val, median_y + triangle_offset + 0.05, f
|
|
837
|
+
ax.text(median_val, median_y + triangle_offset + 0.05, f"median: {median_val:.2f}", ha="center", va="bottom", fontsize=8, fontweight="bold", color="black", zorder=7)
|
|
838
838
|
|
|
839
839
|
# --- Labels & formatting ---
|
|
840
840
|
ax.set_yticks(range(1, n + 1))
|
|
@@ -847,14 +847,14 @@ def hill_plot(*args, labels=None, xlabel=None, ylabel=None, title=None, widths=0
|
|
|
847
847
|
# Style improvements
|
|
848
848
|
ax.spines['top'].set_visible(False)
|
|
849
849
|
ax.spines['right'].set_visible(False)
|
|
850
|
-
ax.grid(axis='x', alpha=0.3, linestyle=
|
|
850
|
+
ax.grid(axis='x', alpha=0.3, linestyle="--", linewidth=0.5)
|
|
851
851
|
|
|
852
852
|
if xlabel:
|
|
853
|
-
ax.set_xlabel(xlabel, fontsize=11, fontweight=
|
|
853
|
+
ax.set_xlabel(xlabel, fontsize=11, fontweight="bold")
|
|
854
854
|
if ylabel:
|
|
855
|
-
ax.set_ylabel(ylabel, fontsize=11, fontweight=
|
|
855
|
+
ax.set_ylabel(ylabel, fontsize=11, fontweight="bold")
|
|
856
856
|
if title:
|
|
857
|
-
ax.set_title(title, fontsize=11, fontweight=
|
|
857
|
+
ax.set_title(title, fontsize=11, fontweight="bold", pad=20)
|
|
858
858
|
|
|
859
859
|
plt.tight_layout()
|
|
860
860
|
plt.close()
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
modusa-0.3.
|
|
2
|
-
modusa-0.3.
|
|
3
|
-
modusa-0.3.
|
|
4
|
-
modusa-0.3.
|
|
1
|
+
modusa-0.3.97.dist-info/METADATA,sha256=YLf2rM5db9dakg9h9AAImZSOB8naM3kt-aT6l3R5gTE,1436
|
|
2
|
+
modusa-0.3.97.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
|
|
3
|
+
modusa-0.3.97.dist-info/entry_points.txt,sha256=fmKpleVXj6CdaBVL14WoEy6xx7JQCs85jvzwTi3lePM,73
|
|
4
|
+
modusa-0.3.97.dist-info/licenses/LICENSE.md,sha256=JTaXAjx5awk76VArKCx5dUW8vmLEWsL_ZlR7-umaHbA,1078
|
|
5
5
|
modusa/.DS_Store,sha256=_gm6qJREwfMi8dE7n5S89_RG46u5t3xHyD-smNhtNoM,6148
|
|
6
|
-
modusa/__init__.py,sha256=
|
|
6
|
+
modusa/__init__.py,sha256=DMopXN8cvrFtWB2_5n0Sg98YI3aX5mWIK4saKdd9Cqg,318
|
|
7
7
|
modusa/config.py,sha256=bTqK4t00FZqERVITrxW_q284aDDJAa9aMSfFknfR-oU,280
|
|
8
8
|
modusa/decorators.py,sha256=8zeNX_wE37O6Vp0ysR4-WCZaEL8mq8dyCF_I5DHOzks,5905
|
|
9
9
|
modusa/devtools/generate_docs_source.py,sha256=UDflHsk-Yh9-3YJTVBzKL32y8hcxiRgAlFEBTMiDqwM,3301
|
|
@@ -51,7 +51,7 @@ modusa/tools/audio_recorder.py,sha256=K_LGqsPdjTdf3figEZTSQLmgMzYWgz18HTO8C1j5fE
|
|
|
51
51
|
modusa/tools/audio_saver.py,sha256=ldzfr_AydsHTnKbxmBLJblN-hLzTmOlppOm306xI4Ug,510
|
|
52
52
|
modusa/tools/base.py,sha256=C0ESJ0mIfjjRlAkRbSetNtMoOfS6IrHBjexRp3l_Mh4,1293
|
|
53
53
|
modusa/tools/math_ops.py,sha256=ZZ7U4DgqT7cOeE7_Lzi_Qq-48WYfwR9_osbZwTmE9eg,8690
|
|
54
|
-
modusa/tools/plotter.py,sha256=
|
|
54
|
+
modusa/tools/plotter.py,sha256=wqikyyvFIVfugRVtf0BlSSZqp_IxsqeFX4ypO94z_5A,29838
|
|
55
55
|
modusa/tools/youtube_downloader.py,sha256=hB_X8-7nOHXOlxg6vv3wyhBLoAsWyomrULP6_uCQL7s,1698
|
|
56
56
|
modusa/utils/.DS_Store,sha256=nLXMwF7QJNuglLI_Gk74F7vl5Dyus2Wd74Mgowijmdo,6148
|
|
57
57
|
modusa/utils/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
|
|
@@ -60,4 +60,4 @@ modusa/utils/excp.py,sha256=L9vhaGjKpv9viJYdmC9n5ndmk2GVbUBuFyZyhAQZmWY,906
|
|
|
60
60
|
modusa/utils/logger.py,sha256=K0rsnObeNKCxlNeSnVnJeRhgfmob6riB2uyU7h3dDmA,571
|
|
61
61
|
modusa/utils/np_func_cat.py,sha256=TyIFgRc6bARRMDnZxlVURO5Z0I-GWhxRONYyIv-Vwxs,1007
|
|
62
62
|
modusa/utils/plot.py,sha256=s_vNdxvKfwxEngvJPgrF1PcmxZNnNaaXPViHWjyjJ-c,5335
|
|
63
|
-
modusa-0.3.
|
|
63
|
+
modusa-0.3.97.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|