A powerful Python tool for creating phasor diagrams in electrical engineering
Project description
PSPhasor
A powerful Python package for creating and manipulating phasor diagrams in electrical engineering.
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
psphasor-0.1.0.tar.gz
(6.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file psphasor-0.1.0.tar.gz.
File metadata
- Download URL: psphasor-0.1.0.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
423017485d058df7b6d68eafe5aa64e9b2f345f3d645e94b049f151c9695daf2
|
|
| MD5 |
12f0a9674fa5b3d37906e5ea8dac3b62
|
|
| BLAKE2b-256 |
8da4213aefc69f665ed70a7692e2ebb9a1cacd59e602efcc9a9813cb8c195abd
|
File details
Details for the file PSPhasor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: PSPhasor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46a9d151a2c87487ab4b6d7fa9d42d1d9f79489f8fc2f412072b7b716fe7ebb4
|
|
| MD5 |
3310b64433f9fd6a0676356a8722c8a6
|
|
| BLAKE2b-256 |
ffbf4ec3a3edaacceb3d4d0daf5d284fb4312d9edd3c9aedc412fa57e87e4758
|