Skip to main content

scientific-visualization

Create publication figures with matplotlib/seaborn/plotly. Multi-panel layouts, error bars, significance markers, colorblind-safe, export PDF/EPS/TIFF, for journal-ready scientific plots.

インストールへ移動

ソース情報

リポジトリ
davila7/claude-code-templates
ソースの最終更新活動
2025年12月20日 21:13
検出された SKILL.md の言語
英語
スター
32,132
フォーク
3,655

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
11 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
scientific-visualization
description
Create publication figures with matplotlib/seaborn/plotly. Multi-panel layouts, error bars, significance markers, colorblind-safe, export PDF/EPS/TIFF, for journal-ready scientific plots.
# Scientific Visualization ## Overview Scientific visualization transforms data into clear, accurate figures for publication. Create journal-ready plots with multi-panel layouts, error bars, significance markers, and colorblind-safe palettes. Export as PDF/EPS/TIFF using matplotlib, seaborn, and plotly for manuscripts. ## When to Use This Skill This skill should be used when: - Creating plots or visualizations for scientific manuscripts - Preparing figures for journal submission (Nature, Science, Cell, PLOS, etc.) - Ensuring figures are colorblind-friendly and accessible - Making multi-panel figures with consistent styling - Exporting figures at correct resolution and format - Following specific publication guidelines - Improving existing figures to meet publication standards - Creating figures that need to work in both color and grayscale ## Quick Start Guide ### Basic Publication-Quality Figure ```python import matplotlib.pyplot as plt import numpy as np # Apply publication style (from scripts/style_presets.py) from style_presets import apply_publication_style apply_publication_style('default') # Create figure with appropriate size (single column = 3.5 inches) fig, ax = plt.subplots(figsize=(3.5, 2.5)) # Plot data x = np.linspace(0, 10, 100) ax.plot(x, np.sin(x), label='sin(x)') ax.plot(x, np.cos(x), label='cos(x)') # Proper labeling with units ax.set_xlabel('Time (seconds)') ax.set_ylabel('Amplitude (mV)') ax.legend(frameon=False) # Remove unnecessary spines ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) # Save in publication formats (from scripts/figure_export.py) from figure_export import save_publication_figure save_publication_figure(fig, 'figure1', formats=['pdf', 'png'], dpi=300) ``` ### Using Pre-configured Styles Apply journal-specific styles using the matplotlib style files in `assets/`: ```python import matplotlib.pyplot as plt # Option 1: Use style file directly plt.style.use('assets/nature.mplstyle') # Option 2: Use style_presets.py helper from style_presets import configure_for_journal configure_for_journal('nature', figure_width='single') # Now create figures - they'll automatically match Nature specifications fig, ax = plt.subplots() # ... your plotting code ... ``` ### Quick Start with Seaborn For statistical plots, use seaborn with publication styling: ```python import seaborn as sns import matplotlib.pyplot as plt from style_presets import apply_publication_style # Apply publication style apply_publication_style('default') sns.set_theme(style='ticks', context='paper', font_scale=1.1) sns.set_palette('colorblind') # Create statistical comparison figure fig, ax = plt.subplots(figsize=(3.5, 3)) sns.boxplot(data=df, x='treatment', y='response', order=['Control', 'Low', 'High'], palette='Set2', ax=ax) sns.stripplot(data=df, x='treatment', y='response', order=['Control', 'Low', 'High'], color='black', alpha=0.3, size=3, ax=ax) ax.set_ylabel('Response (μM)') sns.despine() # Save figure from figure_export import save_publication_figure save_publication_figure(fig, 'treatment_comparison', formats=['pdf', 'png'], dpi=300) ``` ## Core Principles and Best Practices ### 1. Resolution and File Format **Critical requirements** (detailed in `references/publication_guidelines.md`): - **Raster images** (photos, microscopy): 300-600 DPI - **Line art** (graphs, plots): 600-1200 DPI or vector format - **Vector formats** (preferred): PDF, EPS, SVG - **Raster formats**: TIFF, PNG (never JPEG for scientific data) **Implementation:** ```python # Use the figure_export.py script for correct settings from figure_export import save_publication_figure # Saves in multiple formats with proper DPI save_publication_figure(fig, 'myfigure', formats=['pdf', 'png'], dpi=300) # Or save for specific journal requirements from figure_export import save_for_journal save_for_journal(fig, 'figure1', journal='nature', figure_type='combination') ``` ### 2. Color Selection - Colorblind Accessibility **Always use colorblind-friendly palettes** (detailed in `references/color_palettes.md`): **Recommended: Okabe-Ito palette** (distinguishable by all types of color blindness): ```python # Option 1: Use assets/color_palettes.py from color_palettes import OKABE_ITO_LIST, apply_palette apply_palette('okabe_ito') # Option 2: Manual specification okabe_ito = ['#E69F00', '#56B4E9', '#009E73', '#F0E442', '#0072B2', '#D55E00', '#CC79A7', '#000000'] plt.rcParams['axes.prop_cycle'] = plt.cycler(color=okabe_ito) ``` **For heatmaps/continuous data:** - Use perceptually uniform colormaps: `viridis`, `plasma`, `cividis` - Avoid red-green diverging maps (use `PuOr`, `RdBu`, `BrBG` instead) - Never use `jet` or `rainbow` colormaps **Always test figures in grayscale** to ensure interpretability. ### 3. Typography and Text **Font guidelines** (detailed in `references/publication_guidelines.md`): - Sans-serif fonts: Arial, Helvetica, Calibri - Minimum sizes at **final print size**: - Axis labels: 7-9 pt - Tick labels: 6-8 pt - Panel labels: 8-12 pt (bold) - Sentence case for labels: "Time (hours)" not "TIME (HOURS)" - Always include units in parentheses **Implementation:** ```python # Set fonts globally import matplotlib as mpl mpl.rcParams['font.family'] = 'sans-serif' mpl.rcParams['font.sans-serif'] = ['Arial', 'Helvetica'] mpl.rcParams['font.size'] = 8 mpl.rcParams['axes.labelsize'] = 9 mpl.rcParams['xtick.labelsize'] = 7 mpl.rcParams['ytick.labelsize'] = 7 ``` ### 4. Figure Dimensions **Journal-specific widths** (detailed in `references/journal_requirements.md`): - **Nature**: Single 89 mm, Double 183 mm - **Science**: Single 55 mm, Double 175 mm - **Cell**: Single 85 mm, Double 178 mm **Check figure size compliance:** ```python from figure_export import check_figure_size fig = plt.figure(figsize=(3.5, 3)) # 89 mm for Nature check_figure_size(fig, journal='nature') ``` ### 5. Multi-Panel Figures **Best practices:** - Label panels with bold letters: **A**, **B**, **C** (uppercase for most journals, lowercase for Nature) - Maintain consistent styling across all panels - Align panels along edges where possible - Use adequate white space between panels **Example implementation** (see `references/matplotlib_examples.md` for complete code): ```python from string import ascii_uppercase fig = plt.figure(figsize=(7, 4)) gs = fig.add_gridspec(2, 2, hspace=0.4, wspace=0.4) ax1 = fig.add_subplot(gs[0, 0]) ax2 = fig.add_subplot(gs[0, 1]) # ... create other panels ... # Add panel labels for i, ax in enumerate([ax1, ax2, ...]): ax.text(-0.15, 1.05, ascii_uppercase[i], transform=ax.transAxes, fontsize=10, fontweight='bold', va='top') ``` ## Common Tasks ### Task 1: Create a Publication-Ready Line Plot See `references/matplotlib_examples.md` Example 1 for complete code. **Key steps:** 1. Apply publication style 2. Set appropriate figure size for target journal 3. Use colorblind-friendly colors 4. Add error bars with correct representation (SEM, SD, or CI) 5. Label axes with units 6. Remove unnecessary spines 7. Save in vector format **Using seaborn for automatic confidence intervals:** ```python import seaborn as sns fig, ax = plt.subplots(figsize=(5, 3)) sns.lineplot(data=timeseries, x='time', y='measurement', hue='treatment', errorbar=('ci', 95), markers=True, ax=ax) ax.set_xlabel('Time (hours)') ax.set_ylabel('Measurement (AU)') sns.despine() ``` ### Task 2: Create a Multi-Panel Figure See `references/matplotlib_examples.md` Example 2 for complete code. **Key steps:** 1. Use `GridSpec` for flexible layout 2. Ensure consistent styling across panels 3. Add bold panel labels (A, B, C, etc.) 4. Align related panels 5. Verify all text is readable at final size ### Task 3: Create a Heatmap with Proper Colormap See `references/matplotlib_examples.md` Example 4 for complete code. **Key steps:** 1. Use perceptually uniform colormap (`viridis`, `plasma`, `cividis`) 2. Include labeled colorbar 3. For diverging data, use colorblind-safe diverging map (`RdBu_r`, `PuOr`) 4. Set appropriate center value for diverging maps 5. Test appearance in grayscale **Using seaborn for correlation matrices:** ```python import seaborn as sns fig, ax = plt.subplots(figsize=(5, 4)) corr = df.corr() mask = np.triu(np.ones_like(corr, dtype=bool)) sns.heatmap(corr, mask=mask, annot=True, fmt='.2f', cmap='RdBu_r', center=0, square=True, linewidths=1, cbar_kws={'shrink': 0.8}, ax=ax) ``` ### Task 4: Prepare Figure for Specific Journal **Workflow:** 1. Check journal requirements: `references/journal_requirements.md` 2. Configure matplotlib for journal: ```python from style_presets import configure_for_journal configure_for_journal('nature', figure_width='single') ``` 3. Create figure (will auto-size correctly) 4. Export with journal specifications: ```python from figure_export import save_for_journal save_for_journal(fig, 'figure1', journal='nature', figure_type='line_art') ``` ### Task 5: Fix an Existing Figure to Meet Publication Standards **Checklist approach** (full checklist in `references/publication_guidelines.md`): 1. **Check resolution**: Verify DPI meets journal requirements 2. **Check file format**: Use vector for plots, TIFF/PNG for images 3. **Check colors**: Ensure colorblind-friendly 4. **Check fonts**: Minimum 6-7 pt at final size, sans-serif 5. **Check labels**: All axes labeled with units 6. **Check size**: Matches journal column width 7. **Test grayscale**: Figure interpretable without color 8. **Remove chart junk**: No unnecessary grids, 3D effects, shadows ### Task 6: Create Colorblind-Friendly Visualizations **Strategy:** 1. Use approved palettes from `assets/color_palettes.py` 2. Add redundant encoding (line styles, markers, patterns) 3. Test with colorblind simulator 4. Ensure grayscale compatibility **Example:** ```python from color_palettes import apply_palette import matplotlib.pyplot as plt apply_palette('okabe_ito') # Add redundant encoding beyond color line_styles = ['-', '--', '-.', ':'] markers = ['o', 's', '^', 'v'] for i, (data, label) in enumerate(datasets): plt.plot(x, data, linestyle=line_styles[i % 4], marker=markers[i % 4], label=label) ``` ## Statistical Rigor **Always include:** - Error bars (SD, SEM, or CI - specify which in caption) - Sample size (n) in figure or caption - Statistical significance markers (*, **, ***) - Individual data points when possible (not just summary statistics) **Example with statistics:** ```python # Show individual points with summary statistics ax.scatter(x_jittered, individual_points, alpha=0.4, s=8) ax.errorbar(x, means, yerr=sems, fmt='o', capsize=3) # Mark significance ax.text(1.5, max_y * 1.1, '***', ha='center', fontsize=8) ``` ## Working with Different Plotting Libraries ### Matplotlib - Most control over publication details - Best for complex multi-panel figures - Use provided style files for consistent formatting - See `references/matplotlib_examples.md` for extensive examples ### Seaborn Seaborn provides a high-level, dataset-oriented interface for statistical graphics, built on matplotlib. It excels at creating publication-quality statistical visualizations with minimal code while maintaining full compatibility with matplotlib customization. **Key advantages for scientific visualization:** - Automatic statistical estimation and confidence intervals - Built-in support for multi-panel figures (faceting) - Colorblind-friendly palettes by default - Dataset-oriented API using pandas DataFrames - Semantic mapping of variables to visual properties #### Quick Start with Publication Style Always apply matplotlib publication styles first, then configure seaborn: ```python import seaborn as sns import matplotlib.pyplot as plt from style_presets import apply_publication_style # Apply publication style apply_publication_style('default') # Configure seaborn for publication sns.set_theme(style='ticks', context='paper', font_scale=1.1) sns.set_palette('colorblind') # Use colorblind-safe palette # Create figure fig, ax = plt.subplots(figsize=(3.5, 2.5))
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る