Skip to main content

PSPhasor

A powerful Python package for creating and manipulating phasor diagrams in electrical engineering.

License: MIT PyPI version

Table of Contents

Features

  • Create complex phasor diagrams
  • Support for voltage and current phasors
  • Reference-based phasor positioning
  • Customizable colors and styles
  • Export diagrams as images

Installation

Install the package via pip:

pip install PSPhasor
## Quick Start

Below is an example of how to create a phasor diagram using PSPhasor:

```python
from PSPhasor.phasor_system import PhasorManager

# Create a new phasor diagram
pm = PhasorManager(figsize=(12, 12))

# Draw source voltage (reference phasor)
pm.draw_phasor(
    "Vs",
    magnitude=10,
    angle=0,
    start_ref="abs",
    start_x=0,
    start_y=0,
    phasor_type="voltage",
    label_offset=0.2,
)

# Draw line voltage drop using end reference
pm.draw_phasor(
    "Vl",
    magnitude=2,
    angle=150,
    start_ref="Vs",
    ref_point="end",
    phasor_type="voltage",
    color="purple",
)

# Draw load voltage using coordinate-based definition
pm.draw_phasor(
    "Vr",
    start_x=0,
    start_y=0,
    end_x=8.5,
    end_y=2.2,
    phasor_type="voltage",
    color="green",
)

# Draw current phasors
pm.draw_phasor(
    "I",
    magnitude=5,
    angle=-30,
    start_ref="abs",
    start_x=2,
    start_y=2,
    phasor_type="current",
)

# Draw another current phasor referenced from the end of I
pm.draw_phasor(
    "I2",
    magnitude=3,
    angle=45,
    start_ref="I",
    ref_point="end",
    phasor_type="current",
    color="cyan",
)

# Get a phasor and print its properties
vs_phasor = pm.get_phasor("Vs")
print("\nVs Phasor properties:")
print(f"Magnitude: {vs_phasor['magnitude']:.2f}")
print(f"Angle: {vs_phasor['angle']:.2f}°")
print(f"End point: ({vs_phasor['end_x']:.2f}, {vs_phasor['end_y']:.2f})")

# Save the diagram
pm.save("phasor_diagram.png")

# Show the complete diagram
pm.show()
```

## Advanced Usage

### Three-Phase System Example

```python
from PSPhasor.phasor_system import PhasorManager

pm = PhasorManager(figsize=(12, 12))

# Draw three-phase voltages
pm.draw_phasor("Va", magnitude=10, angle=0)
pm.draw_phasor("Vb", magnitude=10, angle=-120)
pm.draw_phasor("Vc", magnitude=10, angle=120)

pm.show()
```

### Power Triangle Example

```python
from PSPhasor.phasor_system import PhasorManager

pm = PhasorManager(figsize=(12, 12))

# Draw apparent power
pm.draw_phasor("S", magnitude=10, angle=30, color='blue')
# Draw real power from start of S
pm.draw_phasor("P", magnitude=8.66, angle=0, start_ref="S", ref_point="start", color='green')
# Draw reactive power
pm.draw_phasor("Q", magnitude=5, angle=90, start_ref="S", ref_point="start", color='red')

pm.show()
```

## API Reference

### PhasorManager Methods

- `draw_phasor(name, magnitude=None, angle=None, start_ref='abs', start_x=0, start_y=0, end_x=None, end_y=None, ref_point='end', phasor_type='voltage', color=None, label_offset=0)`
- `get_phasor(name)` - Get phasor by name
- `clear()` - Clear all phasors
- `show(grid=True, equal_aspect=True)` - Display the diagram
- `save(filename)` - Save diagram to file

### Parameters Explained

- **magnitude**: Magnitude (length) for phasors defined with an angle
- **angle**: Angle (in degrees) for phasors defined with a magnitude
- **start_x, start_y**: Starting coordinates (used when specifying coordinates)
- **end_x, end_y**: Ending coordinates (alternative to magnitude/angle)
- **phasor_type**: 'voltage' or 'current' to adjust style and color
- **label_offset**: Offset for the phasor label (optional)

## Contributing

Contributions are welcome! Feel free to fork the repository and submit Pull Requests.

## License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for PSPhasor 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PSPhasor 0.1.0
File Size Uploaded
psphasor-0.1.0.tar.gz 6.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for PSPhasor 0.1.0
File Interpreter ABI Platform
PSPhasor-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.5 kB

Release files / psphasor-0.1.0.tar.gz

Download URL psphasor-0.1.0.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
423017485d058df7b6d68eafe5aa64e9b2f345f3d645e94b049f151c9695daf2
BLAKE2b-256 checksum
How to use checksums
8da4213aefc69f665ed70a7692e2ebb9a1cacd59e602efcc9a9813cb8c195abd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / PSPhasor-0.1.0-py3-none-any.whl

Download URL PSPhasor-0.1.0-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46a9d151a2c87487ab4b6d7fa9d42d1d9f79489f8fc2f412072b7b716fe7ebb4
BLAKE2b-256 checksum
How to use checksums
ffbf4ec3a3edaacceb3d4d0daf5d284fb4312d9edd3c9aedc412fa57e87e4758
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page