Metadata-Version: 2.4
Name: eleganplot
Version: 0.1.0
Summary: EleganPlot — надстройка над Matplotlib для элегантной, изящной визуализации.
Project-URL: Homepage, https://github.com/AlFrauch/eleganplot
Project-URL: Repository, https://github.com/AlFrauch/eleganplot
Project-URL: Documentation, https://github.com/AlFrauch/eleganplot#readme
Project-URL: Bug Tracker, https://github.com/AlFrauch/eleganplot/issues
Author: Alex Frauch
License: MIT License
        
        Copyright (c) 2024 Alex Frauch
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Keywords: matplotlib,plot,styling,themes,visualization
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Visualization
Requires-Python: >=3.9
Requires-Dist: matplotlib>=3.7
Description-Content-Type: text/markdown

# EleganPlot 🎨

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

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

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

## 📦 Установка

```bash
pip install eleganplot
```

Или для разработки:
```bash
git clone https://github.com/yourusername/eleganplot.git
cd eleganplot
pip install -e .
```

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

```python
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()
```

## 🎨 Система тем

```python
import eleganplot as eplt

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

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

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

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

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

```python
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'` — синусоидальное затухание

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

```python
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()
```

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

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

```python
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()
```

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

```python
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()
```

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

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

```python
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()
```

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

```python
# Тёмная тема с эффектами свечения
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/                   # Документация
```

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

- [Руководство по эффектам свечения](GLOW_LINE_GUIDE.md)
- [Система кастомных методов](CUSTOM_METHODS.md)
- [Руководство по комбинированию методов](COMBINATION_GUIDE.md)

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

Мы приветствуем вклад в развитие 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](LICENSE) для деталей.

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

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

## 📈 Версии

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

## 👨‍💻 Автор

**Alex Frauch**

---

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