Skip to main content

Tool to plot modality vector diagrams

Project description

DiaModality - The Modality Diagram

Simple tool to plot vector modality diagram

GitHub Actions Workflow Status pypi_version GitHub Release PyPI - License Python PyPI - Downloads

To install package run the command:

pip install diamodality

Example use case:

See the /demo directory on Git repo or
create and run the following two files:
(file names don't matter)


generate_sample_data.py:

import csv
import random
import os

num_rows = 1500
output_file = 'modality_data.csv'

# locate working directory
script_dir = os.path.dirname(os.path.realpath(__file__))
file_path = os.path.join(script_dir, output_file)

# Open a new CSV file to write the data
with open(file_path, mode='w', newline='') as file:
    writer = csv.writer(file)

    # Generate the data
    signal_treshold = 1.5
    for _ in range(num_rows):

        # generate data columns:
        col1 = random.uniform(0, 2.7)
        col2 = random.uniform(0, 3.3)
        col3 = random.uniform(0, 7.3)

        # generate binarization columns:
        col4 = 1 if col1 > signal_treshold else ''
        col5 = 1 if col2 > signal_treshold else ''
        col6 = 1 if col3 > signal_treshold else ''

        writer.writerow([col1, col2, col3, col4, col5, col6])

plot_sample_data.py:

import DiaModality.ModalityPlot as plt
import scsv as csv
import os

# input files:
files = ['modality_data.csv']

# Get full path
script_dir = os.path.dirname(os.path.realpath(__file__))

for file in files:

    # Get full path of input files
    file_path = os.path.join(script_dir, file)

    # Parse data from csv file
    new_csv = csv.OpenFile(file_path)
    data, binarization = new_csv.GetRows(3, 3)

    # Make figure:
    plot = plt.ModalityPlot(
        data,
        binarization,
        modalities=['Set 1', 'Set 2', 'Set 3'],
        angles=[210, 90, 330],
        labels=False,
        scalecircle=0.5,           # Scale circle radius
        scalecircle_linestyle=':',
        scalecircle_linewidth=0.75,
        marker='',                 # vector endpoints marker
        linestyle='-',
        linewidth=0.5,
        alpha=0.5,
        same_scale=False,          # Draw all the subplots in the same scale
        full_center=True,          # Draw all vectors in the central subplot,
                                   # else draw trimodal vectors only
        whole_sum=True,            # Calculate all three modality vectors despite binarization
        figsize=(10, 10),
        dpi=100,
        title='Modality Diagram Example',
        colors=(
            'tab:green',   # Set 1 color
            'navy',        # Set 2 color
            'tab:red',     # Set 3 color
            '#1E88E5',     # Sets 1 & 2 intersection color
            '#FF9933',     # Sets 1 & 3 intersection color
            '#9900FF',     # Sets 2 & 3 intersection color
            'black',       # All sets   intersection color
        ),      
    )

    plot.save(file_path, type='png', transparent=False)
    plot.show()

Source page: https://github.com/konung-yaropolk/DiaModality

modality_data csv

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

diamodality-0.2.8.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

diamodality-0.2.8-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file diamodality-0.2.8.tar.gz.

File metadata

  • Download URL: diamodality-0.2.8.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for diamodality-0.2.8.tar.gz
Algorithm Hash digest
SHA256 cbd396d7ef677fdd2e064e69db3d9dac308ebe48756675bf5056adb44f80aaea
MD5 aba4145f6879b4abb4cba4ebfcf5ba38
BLAKE2b-256 14e813c1ffe6bacc6b8181117b83d6f19c0220d8d2fe76a4f8967848c4c314c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for diamodality-0.2.8.tar.gz:

Publisher: python-publish.yml on konung-yaropolk/DiaModality

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diamodality-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: diamodality-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for diamodality-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 093e3a18355993ba37b6e7752ac5e4cbdd1ac2254f3615e55e02a8f268148b2c
MD5 3c39b899a95ee97694c17a2beac31f3c
BLAKE2b-256 b50a785527173dc0611ac0ae2ff0b74bd77d1e43eeb6123a7536b7fe188bc5c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for diamodality-0.2.8-py3-none-any.whl:

Publisher: python-publish.yml on konung-yaropolk/DiaModality

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page