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.gradient_subplots(dpi=200)
ax.plot(x, y, linewidth=2, label='sin(x)')
ax.set_title('График с градиентным фоном')
ax.legend()
eplt.show()

# С кастомными цветами градиента
fig, ax = eplt.gradient_subplots(
    figsize=(10, 6),
    dpi=200,
    gradient_colors=("#1a0033", "#330066"),  # Фиолетовый градиент
)
ax.plot(x, y, color='#FF6B9D', linewidth=2)
eplt.show()

Готовые цветовые схемы

  • Тёмный сине-зелёный: ("#00080a", "#042628") (по умолчанию)
  • Фиолетовый: ("#1a0033", "#330066")
  • Зелёный: ("#002200", "#004400")
  • Синий: ("#000033", "#001166")

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

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

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 (текущая)

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

👨‍💻 Автор

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.1.tar.gz (1.6 MB 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.1-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for eleganplot-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8a260c8338e2c6544dd72126848bad792e9689736ad674862a3e26aba44c66c2
MD5 ce0754d322754158ec61c4cdea9f2c7b
BLAKE2b-256 fda134030c206084b7f7bf6a2a11aff5fe138fe53a59094450af46ac811b2cf2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: eleganplot-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 20.8 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d7971545a5842e94aa818dc0bee16af645b26a597e44d8ad42a850cde342feb3
MD5 adade3736c0649182027b397ca4a4a97
BLAKE2b-256 548fc456504a7acd9573d44c96f5b4847ea2ea6eddbd9bde079ce360dbe3b1e7

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