data-viz تایید شده

Guide for creating data visualizations with Python Matplotlib. Use this when asked to generate charts, graphs, or visual reports from crypto data.

47از ۱۰۰
۰
ستاره
۲۲
دانلود
۹۲
بازدید

// نصب مهارت

نصب مهارت

مهارت‌ها کدهای شخص ثالث از مخازن عمومی GitHub هستند. SkillHub الگوهای مخرب شناخته‌شده را اسکن می‌کند اما نمی‌تواند امنیت را تضمین کند. قبل از نصب، کد منبع را بررسی کنید.

نصب سراسری (سطح کاربر):

npx skillhub install hsph-bst236-2026/crypto-watchtower/data-viz

نصب در پروژه فعلی:

npx skillhub install hsph-bst236-2026/crypto-watchtower/data-viz --project

skill.install.customTargetHelp

npx skillhub install hsph-bst236-2026/crypto-watchtower/data-viz --target-dir /path/to/skills

مسیر پیشنهادی: ~/.claude/skills/data-viz/

بررسی هوش مصنوعی

47
از ۱۰۰
کیفیت دستورالعمل50
دقت توضیحات40
کاربردی بودن41
صحت فنی65

Scored 47 — technically correct Matplotlib template with accessibility considerations. Limited to one chart type and crypto data. Course project repo limits credibility. Would score higher with multiple chart types.

prototypesimpledata-analystscrypto-tradersdata-visualizationcrypto-chartsmatplotlib
بررسی‌شده توسط claude-code در تاریخ ۱۴۰۵/۱/۵

محتوای SKILL.md

---
name: data-viz
description: Guide for creating data visualizations with Python Matplotlib. Use this when asked to generate charts, graphs, or visual reports from crypto data.
---

# Data Visualization Skill: Matplotlib Charts

## Overview
This skill covers creating publication-quality visualizations from cryptocurrency market data using Python and Matplotlib.

## Standard Chart: Horizontal Bar Chart

### Complete Template
```python
#!/usr/bin/env python3
"""Generate market movers bar chart from volatile coins data."""
import json
import matplotlib.pyplot as plt
from pathlib import Path

# Configuration
INPUT_FILE = 'volatile_movers.json'
OUTPUT_FILE = 'market_chart.png'
DPI = 300

# Color scheme (accessible, dark-mode friendly)
COLOR_GAIN = '#00ff88'   # Bright green
COLOR_LOSS = '#ff4444'   # Bright red
COLOR_BG = '#1a1a2e'     # Dark background
COLOR_TEXT = '#eeeeee'   # Light text

def load_data(filepath: str) -> list:
    """Load coin data from JSON file."""
    with open(filepath, 'r', encoding='utf-8') as f:
        return json.load(f)

def create_chart(coins: list, output_path: str) -> None:
    """Create and save horizontal bar chart."""
    if not coins:
        print("No data to visualize")
        return
    
    # Prepare data
    coins_sorted = sorted(coins, key=lambda x: x['price_change_percentage_24h'])
    names = [f"{c['symbol'].upper()}" for c in coins_sorted]
    changes = [c['price_change_percentage_24h'] for c in coins_sorted]
    colors = [COLOR_GAIN if c > 0 else COLOR_LOSS for c in changes]
    
    # Create figure with dark background
    fig, ax = plt.subplots(figsize=(10, max(6, len(names) * 0.4)))
    fig.patch.set_facecolor(COLOR_BG)
    ax.set_facecolor(COLOR_BG)
    
    # Create bars
    bars = ax.barh(names, changes, color=colors, edgecolor='white', linewidth=0.5)
    
    # Add value labels on bars
    for bar, change in zip(bars, changes):
        width = bar.get_width()
        label_x = width + 0.5 if width > 0 else width - 0.5
        ha = 'left' if width > 0 else 'right'
        ax.text(label_x, bar.get_y() + bar.get_height()/2, 
                f'{change:+.1f}%', va='center', ha=ha, 
                color=COLOR_TEXT, fontsize=9)
    
    # Styling
    ax.set_xlabel('24h Price Change (%)', color=COLOR_TEXT, fontsize=12)
    ax.set_title('🔥 Crypto Market Movers', color=COLOR_TEXT, fontsize=16, pad=20)
    ax.tick_params(colors=COLOR_TEXT)
    ax.spines['bottom'].set_color(COLOR_TEXT)
    ax.spines['left'].set_color(COLOR_TEXT)
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    
    # Add zero line
    ax.axvline(x=0, color=COLOR_TEXT, linewidth=0.5, alpha=0.5)
    
    # Save
    plt.tight_layout()
    fig.savefig(output_path, dpi=DPI, bbox_inches='tight', 
                facecolor=COLOR_BG, edgecolor='none')
    plt.close(fig)
    print(f"✅ Chart saved: {output_path}")

if __name__ == "__main__":
    coins = load_data(INPUT_FILE)
    create_chart(coins, OUTPUT_FILE)
```

## Color Schemes

### Dark Mode (Default)
```python
COLOR_BG = '#1a1a2e'      # Deep blue-black
COLOR_TEXT = '#eeeeee'    # Off-white
COLOR_GAIN = '#00ff88'    # Neon green
COLOR_LOSS = '#ff4444'    # Bright red
COLOR_ACCENT = '#4cc9f0'  # Cyan accent
```

### Light Mode Alternative
```python
COLOR_BG = '#ffffff'
COLOR_TEXT = '#333333'
COLOR_GAIN = '#2e7d32'    # Forest green
COLOR_LOSS = '#c62828'    # Dark red
```

### Colorblind-Friendly
```python
COLOR_GAIN = '#0077bb'    # Blue instead of green
COLOR_LOSS = '#ee7733'    # Orange instead of red
```

## Chart Types Reference

### Pie Chart (Market Cap Distribution)
```python
fig, ax = plt.subplots(figsize=(8, 8))
ax.pie(market_caps, labels=names, autopct='%1.1f%%', 
       colors=plt.cm.Set3.colors)
ax.set_title('Market Cap Distribution')
```

### Line Chart (Price History)
```python
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(dates, prices, color=COLOR_ACCENT, linewidth=2)
ax.fill_between(dates, prices, alpha=0.3, color=COLOR_ACCENT)
ax.set_xlabel('Date')
ax.set_ylabel('Price (USD)')
```

### Scatter Plot (Volume vs Change)
```python
fig, ax = plt.subplots(figsize=(10, 8))
scatter = ax.scatter(volumes, changes, c=changes, 
                     cmap='RdYlGn', s=100, alpha=0.7)
plt.colorbar(scatter, label='24h Change %')
```

## Best Practices

| Practice | Why |
|----------|-----|
| Use `fig, ax` pattern | More control than `plt.` functions |
| Always call `plt.close(fig)` | Prevents memory leaks |
| Set `dpi=300` for output | Publication quality |
| Use `bbox_inches='tight'` | No cut-off labels |
| Set `encoding='utf-8'` | Handle emoji/special chars |
| Use `facecolor` in savefig | Preserves background |

## Troubleshooting

| Issue | Solution |
|-------|----------|
| Labels cut off | Add `bbox_inches='tight'` |
| Blurry output | Increase `dpi` (300+) |
| Memory warnings | Call `plt.close()` after each figure |
| Missing fonts | Use system fonts or install `matplotlib` fonts |
| Wrong colors in saved file | Specify `facecolor` in `savefig()` |

مجوز

در منبع این مهارت هیچ مجوزی اعلام نشده است.

متن کامل مجوز در مخزن منبع در دسترس است.

مشاهدهٔ مجوز در مخزن منبعنسخهٔ منتشرشده در آن‌جا مرجع است.