aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/vk
diff options
context:
space:
mode:
authorEgor Tensin <egor@tensin.name>2026-10-06 11:32:20 +0500
committerEgor Tensin <egor@tensin.name>2026-10-06 11:32:20 +0500
commit0532f8b876b4b025d6e4d6452f32a828b1fcd40c (patch)
tree6db4938e0c9ae3e8624f8a74fd9da5845669d63e /vk
parentmove Pylint settings to pyproject.toml (diff)
downloadvk-scripts-0532f8b876b4b025d6e4d6452f32a828b1fcd40c.tar.gz
vk-scripts-0532f8b876b4b025d6e4d6452f32a828b1fcd40c.zip
vk.utils.bar_chart: refactoring
Diffstat (limited to 'vk')
-rw-r--r--vk/utils/bar_chart.py50
1 files changed, 39 insertions, 11 deletions
diff --git a/vk/utils/bar_chart.py b/vk/utils/bar_chart.py
index 7b3a070..fa8f8b4 100644
--- a/vk/utils/bar_chart.py
+++ b/vk/utils/bar_chart.py
@@ -3,6 +3,9 @@
# For details, see https://github.com/egor-tensin/vk-scripts
# Distributed under the MIT License.
+import argparse
+import sys
+
import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np
@@ -131,30 +134,46 @@ class BarChartBuilder:
self._fig.savefig(path, bbox_inches="tight")
-if __name__ == "__main__":
- import argparse
+def _parse_args(argv=None):
+ if argv is None:
+ argv = sys.argv[1:]
parser = argparse.ArgumentParser()
- parser.add_argument("--categories", nargs="*", metavar="LABEL", default=[])
- parser.add_argument("--values", nargs="*", metavar="N", default=[], type=float)
-
- parser.add_argument("--output", "-o", help="set output file path")
-
+ parser.add_argument(
+ "--categories",
+ nargs="*",
+ metavar="LABEL",
+ default=[],
+ )
+ parser.add_argument(
+ "--values",
+ nargs="*",
+ metavar="N",
+ default=[],
+ type=float,
+ )
+ parser.add_argument(
+ "--output",
+ "-o",
+ help="set output file path",
+ )
parser.add_argument(
"--align-middle",
action="store_true",
dest="labels_align_middle",
help="align labels to the middle of the bars",
)
-
parser.add_argument(
- "--integer-values", action="store_true", dest="only_integer_values"
+ "--integer-values",
+ action="store_true",
+ dest="only_integer_values",
)
parser.add_argument(
- "--any-values", action="store_false", dest="only_integer_values"
+ "--any-values",
+ action="store_false",
+ dest="only_integer_values",
)
-
parser.add_argument("--grid-categories", action="store_true")
parser.add_argument("--grid-values", action="store_true")
@@ -165,6 +184,11 @@ if __name__ == "__main__":
if len(args.categories) > len(args.values):
args.values.extend([0.0] * (len(args.categories) - len(args.values)))
+ return args
+
+
+def _main(argv=None):
+ args = _parse_args(argv)
builder = BarChartBuilder(labels_align_middle=args.labels_align_middle)
if args.only_integer_values:
@@ -183,3 +207,7 @@ if __name__ == "__main__":
builder.show()
else:
builder.save(args.output)
+
+
+if __name__ == "__main__":
+ _main()