Skip to main content

EleganPlot — надстройка над Matplotlib для элегантной, изящной визуализации.

Project description

EleganPlot 🎨

EleganPlot — это элегантная надстройка над Matplotlib для создания красивых и стильных визуализаций в Python. Библиотека предоставляет систему тем, кастомные методы построения графиков и специальные эффекты для создания профессиональных визуализаций.

✨ Основные возможности

  • 🎭 Система тем — предустановленные и кастомные темы оформления
  • 🌟 Эффекты свечения — создание линий с эффектом glow
  • 🌈 Градиентные заливки — заливка под кривыми с градиентом
  • 🔧 Кастомные методы — легкое расширение функциональности
  • 📊 Готовые компоненты — доверительные интервалы, мультилинии и другое
  • 🎯 Простой API — знакомый интерфейс в стиле matplotlib

📦 Установка

pip install eleganplot

Или для разработки:

git clone https://github.com/yourusername/eleganplot.git
cd eleganplot
pip install -e .

🚀 Быстрый старт

import eleganplot as eplt
import numpy as np

# Создаём данные
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

# Простой график с темой
fig, ax = eplt.subplots()
ax.plot(x, y, label='sin(x)')
ax.legend()
eplt.show()

🎨 Система тем

import eleganplot as eplt

# Просмотр доступных тем
print(eplt.list_themes())

# Установка темы
eplt.set_current_theme('dark')

# Создание графика с темой
fig, ax = eplt.subplots()
ax.plot(x, y)
eplt.show()

🌟 Эффект свечения (Glow)

Создание линий с эффектом свечения:

fig, ax = eplt.subplots()

# Базовое свечение
main_line, glow_lines = ax.glow_line(x, y, 
                                    glow_color='cyan', 
                                    glow_width=5.0)

# Продвинутое свечение с настройками
main_line, glow_lines = ax.glow_line(x, y,
                                    glow_color='orange',
                                    glow_width=8.0,
                                    glow_alpha=0.7,
                                    glow_layers=20,
                                    decay_function='gaussian')
eplt.show()

Функции затухания

  • 'linear' — линейное затухание
  • 'exponential' — экспоненциальное затухание
  • 'gaussian' — гауссово затухание (по умолчанию)
  • 'quadratic' — квадратичное затухание
  • 'cubic' — кубическое затухание
  • 'sine' — синусоидальное затухание

🌈 Градиентные заливки

fig, ax = eplt.subplots()

# Градиентная заливка под кривой
line, gradient = ax.gradient_plot(x, y, 
                                 fill_color='blue', 
                                 alpha_coef=0.7)

# Градиент до минимума осей
line, gradient = ax.gradient_plot(x, y, 
                                 fill_color='red',
                                 gradient_to_min=True)
eplt.show()

🔧 Кастомные методы

Использование готовых методов

fig, ax = eplt.subplots()

# Доверительная полоса
y_mean = np.sin(x)
y_std = 0.2 * np.ones_like(x)
ax.confidence_band(x, y_mean, y_std, confidence=0.95)

# Несколько линий
y_data = [np.sin(x), np.cos(x), np.tan(x/4)]
ax.multi_line(x, y_data, 
              labels=['sin', 'cos', 'tan'],
              colors=['red', 'blue', 'green'])
eplt.show()

Создание собственных методов

from eleganplot import custom_axes_method

@custom_axes_method("my_plot")
def my_custom_plot(ax, x, y, style='fancy', **kwargs):
    """Мой кастомный метод построения графиков."""
    if style == 'fancy':
        return ax._ax.plot(x, y, marker='o', linestyle='--', **kwargs)
    else:
        return ax._ax.plot(x, y, **kwargs)

# Использование
fig, ax = eplt.subplots()
ax.my_plot(x, y, style='fancy', color='purple')
eplt.show()

📊 Примеры использования

Научные графики

import eleganplot as eplt
import numpy as np

# Данные эксперимента
x = np.linspace(0, 10, 50)
y_true = 2 * np.exp(-x/3) * np.sin(x)
y_measured = y_true + 0.1 * np.random.randn(50)
y_error = 0.1 * np.ones_like(x)

# График с доверительным интервалом
fig, ax = eplt.subplots(figsize=(10, 6))
ax.confidence_band(x, y_measured, y_error, 
                   confidence=0.95, 
                   label='Измерения ±σ')
ax.plot(x, y_true, 'r--', label='Теория', linewidth=2)
ax.legend()
ax.set_title('Экспериментальные данные с доверительным интервалом')
eplt.show()

Эффектные презентационные графики

# Тёмная тема с эффектами свечения
eplt.set_current_theme('dark')

fig, ax = eplt.subplots(figsize=(12, 8))

# Несколько линий с свечением
colors = ['cyan', 'magenta', 'yellow', 'lime']
for i, color in enumerate(colors):
    y = np.sin(x + i*np.pi/4) * np.exp(-x/8)
    ax.glow_line(x, y, 
                glow_color=color,
                glow_width=6.0,
                glow_alpha=0.8,
                linewidth=2)

ax.set_title('Эффектные линии с свечением', fontsize=16)
eplt.show()

📁 Структура проекта

eleganplot/
├── src/eleganplot/
│   ├── __init__.py          # Основные экспорты
│   ├── pyplot.py            # Обёртки matplotlib
│   ├── theme.py             # Система тем
│   └── utils/
│       ├── custom_methods.py # Готовые кастомные методы
│       ├── decorators.py     # Система декораторов
│       ├── glow.py          # Эффекты свечения
│       └── gradient.py      # Градиентные заливки
├── examples/                # Примеры использования
└── docs/                   # Документация

📚 Документация

🤝 Вклад в проект

Мы приветствуем вклад в развитие EleganPlot!

  1. Форкните репозиторий
  2. Создайте ветку для новой функции (git checkout -b feature/amazing-feature)
  3. Зафиксируйте изменения (git commit -m 'Add amazing feature')
  4. Отправьте в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📄 Лицензия

Этот проект лицензирован под MIT License — смотрите файл LICENSE для деталей.

🔗 Зависимости

  • Python >= 3.9
  • matplotlib >= 3.7
  • numpy (через matplotlib)

📈 Версии

v0.1.0 (текущая)

  • Базовая система тем
  • Эффекты свечения для линий
  • Градиентные заливки
  • Система кастомных методов
  • Готовые компоненты (доверительные интервалы, мультилинии)

👨‍💻 Автор

Alex Frauch


EleganPlot — делаем визуализацию данных элегантной! ✨

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

eleganplot-0.1.0.tar.gz (124.7 kB view details)

Uploaded Source

Built Distribution

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

eleganplot-0.1.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file eleganplot-0.1.0.tar.gz.

File metadata

  • Download URL: eleganplot-0.1.0.tar.gz
  • Upload date:
  • Size: 124.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for eleganplot-0.1.0.tar.gz
Algorithm Hash digest
SHA256 10461c8134bc5490f9743d808e107f4c5d6ed4531e257baf4619c439d9aa7d57
MD5 dcb6d5b825e293e4938dbd1761a11a81
BLAKE2b-256 48a9a461f39dd17ea46654de1ba722643d4c946bf0f876b3d563012c9642ccb1

See more details on using hashes here.

File details

Details for the file eleganplot-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: eleganplot-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for eleganplot-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1749aab8516019c6e7690b0eb1fc3dd735813aa8d4909de1bd6a38ceaf710d6b
MD5 2368ddf803756e51338df24e3059a655
BLAKE2b-256 72c53d69796fbcdbbcc83b0f49919085be85ac32cdbd02bdec92c8826a3f9c8a

See more details on using hashes here.

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