본문으로 건너뛰기
cccskills
무료GitHub에 공개

plotly-r

Interactive R visualization with plotly: plot_ly() for scatter, line, bar, heatmap, 3D charts; ggplotly() to convert ggplot2 objects; layout() for customization; htmlwidgets::saveWidget() for export. Use when execution language is R and interactivity needed. Python equivalent: plotly. For static figures use ggplot2.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DAAF-Contribution-Community/daaf스타 238(GitHub 238 + cccskills 0)

실행 점수 미검증

설치 방법 보기

포함된 파일(8)

  • SKILL.md9.3 KB
  • references/chart-types.md5.9 KB
  • references/export.md5.1 KB
  • references/ggplotly.md6.0 KB
  • references/gotchas.md7.7 KB
  • references/layouts.md7.4 KB
  • references/quickstart.md6.0 KB
  • references/subplots.md4.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

plotly-r Skill

Interactive R visualization with the plotly package (4.12.0). Covers plot_ly() for direct trace-based charts (scatter, line, bar, histogram, box, heatmap, 3D scatter, 3D surface); ggplotly() for converting ggplot2 objects to interactive equivalents; layout() for axis, title, legend, and annotation customization; subplot() for multi-panel composition; and htmlwidgets::saveWidget() for self-contained HTML export. Use when execution language is R and interactive hover/zoom/pan behavior is needed. Python equivalent: plotly (Plotly Express + Graph Objects). For static publication-quality R figures, use ggplot2 instead.

What is plotly for R?

plotly is an R interface to the Plotly.js JavaScript library:

  • Interactive: Hover, zoom, pan, and select built-in
  • Two approaches: plot_ly() (direct) and ggplotly() (convert from ggplot2)
  • Web-based: Renders as HTML/JavaScript via htmlwidgets
  • Wide chart support: scatter, line, bar, histogram, box, heatmap, 3D, maps
  • Piping: Works with R's native pipe |> for chained layout/trace updates

How to Use This Skill

Reference File Structure

FilePurposeWhen to Read
quickstart.mdplot_ly() basics, add_trace(), piping, saveWidgetStarting out
chart-types.mdscatter, line, bar, histogram, box, heatmap, 3DChoosing chart types
ggplotly.mdConverting ggplot2 objects, tooltip customizationggplot2 bridge
layouts.mdlayout() for axes, titles, legends, annotationsCustomizing appearance
export.mdsaveWidget(), orca/kaleido for static, Quarto embeddingSaving and sharing
subplots.mdsubplot() composition, shared axes, mixed typesMulti-panel layouts
gotchas.mdplot_ly vs ggplotly tradeoffs, formula interface, performanceDebugging

Reading Order

  1. Quick plot? Start with quickstart.md
  2. Which chart? Check chart-types.md
  3. Have ggplot2 code? Read ggplotly.md
  4. Customize layout? Read layouts.md
  5. Save/export? Read export.md
  6. Multiple panels? Read subplots.md
  7. Trouble? Check gotchas.md

Related Skills

SkillRelationship
plotlyPython equivalent (Plotly Express + Graph Objects)
ggplot2Static R figures; ggplotly() converts ggplot2 objects to interactive
quartoQuarto embedding for plotly htmlwidgets
tidyverseData preparation -- tidy data feeds into plot_ly() pipelines
r-python-translationCross-language visualization translation
data-scientistMethod selection and visualization design guidance

Quick Decision Trees

"What chart type do I need?"

What are you visualizing?
|-- Relationship (x vs y)
|   |-- Continuous x, continuous y -> plot_ly(type = "scatter", mode = "markers")
|   |-- Time series -> plot_ly(type = "scatter", mode = "lines")
|   +-- With error/uncertainty -> add error bars via error_y
|-- Distribution
|   |-- One variable -> plot_ly(type = "histogram")
|   |-- By group -> plot_ly(type = "box") or plot_ly(type = "violin")
|   +-- Heatmap/density -> plot_ly(type = "heatmap")
|-- Comparison
|   |-- Counts/values -> plot_ly(type = "bar")
|   +-- Grouped -> barmode = "group" in layout()
|-- 3D
|   |-- Scatter -> plot_ly(type = "scatter3d")
|   +-- Surface -> plot_ly(type = "surface")
+-- Already have ggplot2 code -> ggplotly(p)

"How do I save this plot?"

Saving a plot?
|-- Interactive HTML (primary DAAF export) -> htmlwidgets::saveWidget()
|-- Static PNG (requires orca/kaleido) -> orca() or kaleido()
|-- Embed in Quarto -> just print the widget in a code chunk
+-- Temp file (smoke tests) -> saveWidget(p, tempfile(fileext = ".html"))

"plot_ly() or ggplotly()?"

Which approach?
|-- Building from scratch -> plot_ly()
|-- Already have ggplot2 code -> ggplotly()
|-- Need fine-grained trace control -> plot_ly()
|-- Quick interactive version of static plot -> ggplotly()
|-- Complex multi-trace with mixed types -> plot_ly() + add_trace()
+-- Want ggplot2 facets interactive -> ggplotly() (preserves faceting)

File-First Execution in Research Workflows

In DAAF research pipelines, all visualizations are generated through script files in scripts/stage8_analysis/, not interactively. This ensures auditability and reproducibility.

The pattern:

  1. Write plot code to scripts/stage8_analysis/{step}_{plot-name}.R
  2. Execute via bash {BASE_DIR}/scripts/run_with_capture.sh {script_path}
  3. Output gets appended to the script as comments
  4. Use htmlwidgets::saveWidget() to save interactive HTML to the project output directory

See agent_reference/SCRIPT_EXECUTION_REFERENCE.md for the mandatory file-first execution protocol.

Quick Reference

Essential Setup

library(plotly)
library(htmlwidgets)  # saveWidget() for HTML export

Basic plot_ly() Pattern

p <- plot_ly(df, x = ~col_x, y = ~col_y, type = "scatter", mode = "markers")
p

Note the formula interface: columns are referenced with ~col_name (tilde prefix), not bare names or strings.

ggplotly() Bridge

library(ggplot2)
library(plotly)

g <- ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
  geom_point()

p <- ggplotly(g)
p

Common plot_ly() Trace Types

TypeModeUse Case
"scatter""markers"Scatter plot
"scatter""lines"Line chart
"scatter""lines+markers"Line with points
"bar"—Bar chart
"histogram"—Histogram
"box"—Box plot
"heatmap"—Heatmap
"scatter3d""markers"3D scatter
"surface"—3D surface

Layout Customization

p <- plot_ly(df, x = ~x, y = ~y, type = "scatter", mode = "markers") |>
  layout(
    title = "My Plot",
    xaxis = list(title = "X Label"),
    yaxis = list(title = "Y Label")
  )

Saving Plots

library(htmlwidgets)

# HTML export (uses CDN for plotly.js -- default for DAAF)
saveWidget(p, "plot.html", selfcontained = FALSE)

# Self-contained HTML (embeds plotly.js, ~3MB -- requires pandoc)
# saveWidget(p, "plot.html", selfcontained = TRUE)  # NOT available in DAAF (no pandoc)

DAAF note: selfcontained = TRUE requires pandoc, which is not installed in the DAAF container. Use selfcontained = FALSE (loads plotly.js from CDN). Static image export via orca() or kaleido() is also not available. Use ggplot2 with ggsave() for static PNG/SVG figures.

Piping with |>

plotly R functions return the plot object, enabling piping:

p <- plot_ly(df, x = ~x, y = ~y, type = "scatter", mode = "markers") |>
  add_trace(y = ~y2, name = "Series 2", mode = "lines") |>
  layout(title = "Two Series", xaxis = list(title = "X")) |>
  config(displayModeBar = FALSE)

Topic Index

TopicReference File
plot_ly() basics./references/quickstart.md
add_trace()./references/quickstart.md
Formula interface (~x)./references/quickstart.md
Piping with |>./references/quickstart.md
saveWidget()./references/quickstart.md
Scatter plots./references/chart-types.md
Line charts./references/chart-types.md
Bar charts./references/chart-types.md
Histograms./references/chart-types.md
Box plots./references/chart-types.md
Heatmaps./references/chart-types.md
3D scatter and surface./references/chart-types.md
ggplotly() conversion./references/ggplotly.md
Tooltip customization./references/ggplotly.md
ggplotly limitations./references/ggplotly.md
Axis titles and formatting./references/layouts.md
Legends./references/layouts.md
Annotations./references/layouts.md
Multiple axes./references/layouts.md
Color scales./references/layouts.md
HTML export./references/export.md
Static image export./references/export.md
Quarto embedding./references/export.md
subplot() composition./references/subplots.md
Shared axes in subplots./references/subplots.md
Mixed chart types./references/subplots.md
plot_ly vs ggplotly./references/gotchas.md
Formula interface gotchas./references/gotchas.md
Performance with large data./references/gotchas.md
Common errors./references/gotchas.md

Citation

When plotly is used as a primary visualization tool, include in the report's Software & Tools references:

Sievert, C. (2020). Interactive Web-Based Data Visualization with R, plotly, and shiny. Chapman and Hall/CRC. https://plotly-r.com

Cite when: plotly produces interactive figures included in the report or notebook. Do not cite when: Only used for quick exploratory plots not included in deliverables.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Guide for creating DAAF agent definition files. Covers 12-section template, hook registration, skills-in-frontmatter, integration checklist. Use when adding or revising agents. For SKILL.md files, use skill-authoring instead.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DAAF-Contribution-Community/daaf2382026년 10월 17일 업데이트

Researcher-facing analytic triangulation ("creative verification") for stress-testing provisional findings and designing pre-specified challenges before an analysis runs. Turns a researcher's concern or focal claim into competing explanations, bounded discriminating tests, audited diagnostic artifacts, and evidence-calibrated interpretations in a hypothesis/evidence ledger — behavioral, output-level verification replacing line-by-line code review. Covers 12 challenge families organized by Shadish-Cook-Campbell validity type, named sensitivity statistics, pre-committed interpretation rules, anti-fishing guardrails, and interactive diagnostic-artifact QA. Use in Ad Hoc Collaboration to verify, challenge, or stress-test a result, or to design discriminating tests before an analysis runs. Not code-change verification (verify skill / code review) and not final adjudication or re-execution (data-verifier, Reproducibility Verification) — prospective, hypothesis-driven challenge design of analytic claims.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DAAF-Contribution-Community/daaf2382026년 10월 17일 업데이트

In-situ smoke testing that verifies a LIVE DAAF deployment functions end-to-end in whatever provider route it is configured for. Auto-detects the active install route (anthropic-subscription, openrouter, chatgpt-subscription shim, openai-api shim) and runs tiered probes: Tier 0 free preflight (route/env coherence, hooks, statuslines, shim health); Tier 1 one live round-trip (~cents); Tier 2 a six-probe functional battery (dispatch, coding, web, skill loading, isolation-strip, nested-dispatch deny); Tier D a zero-cost deterministic battery (bats, Pester, lint, safety-hook tests). Use after install, after a rebuild or update, after any provider/config change (new API key, model remap, shim change), for pre-release validation, or when asked "is my install working" or to "smoke test the deployment/config." Requires the DAAF_DEV=1 dev image; a contributor tool, not end-user-facing. NOT DAAFBench (model behavioral-adherence evaluation under benchmarks/) and NOT scripts/smoke_tests/ (R/Python library-package smoke tests).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DAAF-Contribution-Community/daaf2382026년 10월 17일 업데이트

Operational framework for the DAAF orchestrator. Defines engagement modes, confirmation protocol, subagent dispatch, context budget, and reference-loading. Loaded exclusively by the orchestrator — not for subagents or user questions.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DAAF-Contribution-Community/daaf2382026년 10월 17일 업데이트

Data science methodology and method-selection routing for quantitative research. Covers EDA, data validation, descriptive analysis, causal inference (IV, DiD, RD, synthetic control), clustering/PCA/UMAP, supervised ML, geospatial analysis, network analysis, and visualization design. Contains the canonical method-to-library routing tree, routed by execution language — Python: statsmodels (OLS/GLM/time series), pyfixest (FE/DiD), linearmodels (RE/GMM/SUR), svy (complex surveys), scikit-learn (clustering/prediction ML), geopandas (spatial), igraph (network analysis); R: r-stats (OLS/GLM/time series), fixest (FE/DiD), plm (panel/RE/IV), survey-r (complex surveys), tidymodels (ML), sf-terra (spatial), igraph-r (network analysis). Load the routed tool-specific skill before giving tool-specific advice or writing code — library skills encode environment constraints and curated caveats absent from general knowledge.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DAAF-Contribution-Community/daaf2382026년 10월 17일 업데이트

Interpretation guidance for Urban Institute Education Data Portal datasets. The Portal is a curation layer over federal data: lowercase variable names, integer-encoded categoricals, standardized missing codes (-1 missing, -2 not applicable, -3 suppressed). Covers year definitions, grade encoding (grade=-1 is Pre-K, not missing), suppression rates, ODC-By licensing, and cross-source join identifiers. Load before analyzing any Portal data. Routes to source-specific deep-dive skills for individual datasets.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DAAF-Contribution-Community/daaf2382026년 10월 17일 업데이트

DAAF-Contribution-Community의 스킬 모두 보기

이 스킬의 문제 신고