{"id":"e40e686e-9434-4caf-b573-e69985e562b4","shortId":"QbNJV2","kind":"skill","title":"plotly","tagline":"Interactive visualization library. Use when you need hover info, zoom, pan, or web-embeddable charts. Best for dashboards, exploratory analysis, and presentations. For static publication figures use matplotlib or scientific-visualization.","description":"# Plotly\n\nPython graphing library for creating interactive, publication-quality visualizations with 40+ chart types.\n\n## When to Use\n- You need interactive charts with hover, zoom, pan, or web embedding.\n- You are building dashboards, exploratory analysis notebooks, or presentations that benefit from rich interaction.\n- You want to choose between Plotly Express and Graph Objects for the same visualization task.\n\n## Quick Start\n\nInstall Plotly:\n```bash\nuv pip install plotly\n```\n\nBasic usage with Plotly Express (high-level API):\n```python\nimport plotly.express as px\nimport pandas as pd\n\ndf = pd.DataFrame({\n    'x': [1, 2, 3, 4],\n    'y': [10, 11, 12, 13]\n})\n\nfig = px.scatter(df, x='x', y='y', title='My First Plot')\nfig.show()\n```\n\n## Choosing Between APIs\n\n### Use Plotly Express (px)\nFor quick, standard visualizations with sensible defaults:\n- Working with pandas DataFrames\n- Creating common chart types (scatter, line, bar, histogram, etc.)\n- Need automatic color encoding and legends\n- Want minimal code (1-5 lines)\n\nSee reference/plotly-express.md for complete guide.\n\n### Use Graph Objects (go)\nFor fine-grained control and custom visualizations:\n- Chart types not in Plotly Express (3D mesh, isosurface, complex financial charts)\n- Building complex multi-trace figures from scratch\n- Need precise control over individual components\n- Creating specialized visualizations with custom shapes and annotations\n\nSee reference/graph-objects.md for complete guide.\n\n**Note:** Plotly Express returns graph objects Figure, so you can combine approaches:\n```python\nfig = px.scatter(df, x='x', y='y')\nfig.update_layout(title='Custom Title')  # Use go methods on px figure\nfig.add_hline(y=10)                     # Add shapes\n```\n\n## Core Capabilities\n\n### 1. Chart Types\n\nPlotly supports 40+ chart types organized into categories:\n\n**Basic Charts:** scatter, line, bar, pie, area, bubble\n\n**Statistical Charts:** histogram, box plot, violin, distribution, error bars\n\n**Scientific Charts:** heatmap, contour, ternary, image display\n\n**Financial Charts:** candlestick, OHLC, waterfall, funnel, time series\n\n**Maps:** scatter maps, choropleth, density maps (geographic visualization)\n\n**3D Charts:** scatter3d, surface, mesh, cone, volume\n\n**Specialized:** sunburst, treemap, sankey, parallel coordinates, gauge\n\nFor detailed examples and usage of all chart types, see reference/chart-types.md.\n\n### 2. Layouts and Styling\n\n**Subplots:** Create multi-plot figures with shared axes:\n```python\nfrom plotly.subplots import make_subplots\nimport plotly.graph_objects as go\n\nfig = make_subplots(rows=2, cols=2, subplot_titles=('A', 'B', 'C', 'D'))\nfig.add_trace(go.Scatter(x=[1, 2], y=[3, 4]), row=1, col=1)\n```\n\n**Templates:** Apply coordinated styling:\n```python\nfig = px.scatter(df, x='x', y='y', template='plotly_dark')\n# Built-in: plotly_white, plotly_dark, ggplot2, seaborn, simple_white\n```\n\n**Customization:** Control every aspect of appearance:\n- Colors (discrete sequences, continuous scales)\n- Fonts and text\n- Axes (ranges, ticks, grids)\n- Legends\n- Margins and sizing\n- Annotations and shapes\n\nFor complete layout and styling options, see reference/layouts-styling.md.\n\n### 3. Interactivity\n\nBuilt-in interactive features:\n- Hover tooltips with customizable data\n- Pan and zoom\n- Legend toggling\n- Box/lasso selection\n- Rangesliders for time series\n- Buttons and dropdowns\n- Animations\n\n```python\n# Custom hover template\nfig.update_traces(\n    hovertemplate='<b>%{x}</b><br>Value: %{y:.2f}<extra></extra>'\n)\n\n# Add rangeslider\nfig.update_xaxes(rangeslider_visible=True)\n\n# Animations\nfig = px.scatter(df, x='x', y='y', animation_frame='year')\n```\n\nFor complete interactivity guide, see reference/export-interactivity.md.\n\n### 4. Export Options\n\n**Interactive HTML:**\n```python\nfig.write_html('chart.html')                       # Full standalone\nfig.write_html('chart.html', include_plotlyjs='cdn')  # Smaller file\n```\n\n**Static Images (requires kaleido):**\n```bash\nuv pip install kaleido\n```\n\n```python\nfig.write_image('chart.png')   # PNG\nfig.write_image('chart.pdf')   # PDF\nfig.write_image('chart.svg')   # SVG\n```\n\nFor complete export options, see reference/export-interactivity.md.\n\n## Common Workflows\n\n### Scientific Data Visualization\n\n```python\nimport plotly.express as px\n\n# Scatter plot with trendline\nfig = px.scatter(df, x='temperature', y='yield', trendline='ols')\n\n# Heatmap from matrix\nfig = px.imshow(correlation_matrix, text_auto=True, color_continuous_scale='RdBu')\n\n# 3D surface plot\nimport plotly.graph_objects as go\nfig = go.Figure(data=[go.Surface(z=z_data, x=x_data, y=y_data)])\n```\n\n### Statistical Analysis\n\n```python\n# Distribution comparison\nfig = px.histogram(df, x='values', color='group', marginal='box', nbins=30)\n\n# Box plot with all points\nfig = px.box(df, x='category', y='value', points='all')\n\n# Violin plot\nfig = px.violin(df, x='group', y='measurement', box=True)\n```\n\n### Time Series and Financial\n\n```python\n# Time series with rangeslider\nfig = px.line(df, x='date', y='price')\nfig.update_xaxes(rangeslider_visible=True)\n\n# Candlestick chart\nimport plotly.graph_objects as go\nfig = go.Figure(data=[go.Candlestick(\n    x=df['date'],\n    open=df['open'],\n    high=df['high'],\n    low=df['low'],\n    close=df['close']\n)])\n```\n\n### Multi-Plot Dashboards\n\n```python\nfrom plotly.subplots import make_subplots\nimport plotly.graph_objects as go\n\nfig = make_subplots(\n    rows=2, cols=2,\n    subplot_titles=('Scatter', 'Bar', 'Histogram', 'Box'),\n    specs=[[{'type': 'scatter'}, {'type': 'bar'}],\n           [{'type': 'histogram'}, {'type': 'box'}]]\n)\n\nfig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=1, col=1)\nfig.add_trace(go.Bar(x=['A', 'B'], y=[1, 2]), row=1, col=2)\nfig.add_trace(go.Histogram(x=data), row=2, col=1)\nfig.add_trace(go.Box(y=data), row=2, col=2)\n\nfig.update_layout(height=800, showlegend=False)\n```\n\n## Integration with Dash\n\nFor interactive web applications, use Dash (Plotly's web app framework):\n\n```bash\nuv pip install dash\n```\n\n```python\nimport dash\nfrom dash import dcc, html\nimport plotly.express as px\n\napp = dash.Dash(__name__)\n\nfig = px.scatter(df, x='x', y='y')\n\napp.layout = html.Div([\n    html.H1('Dashboard'),\n    dcc.Graph(figure=fig)\n])\n\napp.run_server(debug=True)\n```\n\n## Reference Files\n\n- **plotly-express.md** - High-level API for quick visualizations\n- **graph-objects.md** - Low-level API for fine-grained control\n- **chart-types.md** - Complete catalog of 40+ chart types with examples\n- **layouts-styling.md** - Subplots, templates, colors, customization\n- **export-interactivity.md** - Export options and interactive features\n\n## Additional Resources\n\n- Official documentation: https://plotly.com/python/\n- API reference: https://plotly.com/python-api-reference/\n- Community forum: https://community.plotly.com/\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["plotly","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity-skills"],"capabilities":["skill","source-sickn33","skill-plotly","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/plotly","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34616 github stars · SKILL.md body (7,125 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T00:51:24.086Z","embedding":null,"createdAt":"2026-04-18T21:42:29.552Z","updatedAt":"2026-04-23T00:51:24.086Z","lastSeenAt":"2026-04-23T00:51:24.086Z","tsv":"'-5':181 '/python-api-reference/':910 '/python/':905 '1':123,180,278,395,401,403,759,767,769,777,780,791 '10':128,273 '11':129 '12':130 '13':131 '2':124,354,382,384,396,737,739,760,778,782,789,798,800 '2f':500 '3':125,398,463,761 '30':645 '3d':206,329,609 '4':126,399,525,763 '40':47,283,883 '5':764 '6':765 '800':804 'add':274,501 'addit':899 'analysi':22,69,631 'anim':489,508,516 'annot':233,452 'api':110,146,865,873,906 'app':819,838 'app.layout':848 'app.run':855 'appear':435 'appli':405 'applic':813 'approach':250 'area':295 'ask':947 'aspect':433 'auto':603 'automat':172 'axe':366,444 'b':388,775 'bar':168,293,305,743,750 'bash':97,548,821 'basic':102,289 'benefit':74 'best':18 'boundari':955 'box':300,643,646,669,745,754 'box/lasso':480 'bubbl':296 'build':66,212 'built':420,466 'built-in':419,465 'button':486 'c':389 'candlestick':315,692 'capabl':277 'catalog':881 'categori':288,655 'cdn':541 'chart':17,48,56,164,200,211,279,284,290,298,307,314,330,350,693,884 'chart-types.md':879 'chart.html':533,538 'chart.pdf':560 'chart.png':556 'chart.svg':564 'choos':81,144 'choropleth':324 'clarif':949 'clear':922 'close':715,717 'code':179 'col':383,402,738,768,781,790,799 'color':173,436,605,640,891 'combin':249 'common':163,572 'communiti':911 'community.plotly.com':913 'comparison':634 'complet':186,237,456,520,567,880 'complex':209,213 'compon':225 'cone':334 'continu':439,606 'contour':309 'control':196,222,431,878 'coordin':341,406 'core':276 'correl':600 'creat':40,162,226,359 'criteria':958 'custom':198,230,262,430,491,892 'customiz':473 'd':390 'dark':418,425 'dash':809,815,825,828,830 'dash.dash':839 'dashboard':20,67,721,851 'data':474,575,619,623,626,629,701,787,796 'datafram':161 'date':684,705 'dcc':832 'dcc.graph':852 'debug':857 'default':157 'densiti':325 'describ':926 'detail':344 'df':120,134,254,411,511,588,637,653,664,682,704,707,710,713,716,843 'discret':437 'display':312 'distribut':303,633 'document':902 'dropdown':488 'embed':63 'embedd':16 'encod':174 'environ':938 'environment-specif':937 'error':304 'etc':170 'everi':432 'exampl':345,887 'expert':943 'exploratori':21,68 'export':526,568,894 'export-interactivity.md':893 'express':84,106,149,205,241 'fals':806 'featur':469,898 'fig':132,252,378,409,509,586,598,617,635,651,662,680,699,733,841,854 'fig.add':270,391,755,770,783,792 'fig.show':143 'fig.update':259,494,503,687,801 'fig.write':531,536,554,558,562 'figur':28,217,245,269,363,853 'file':543,860 'financi':210,313,674 'fine':194,876 'fine-grain':193,875 'first':141 'font':441 'forum':912 'frame':517 'framework':820 'full':534 'funnel':318 'gaug':342 'geograph':327 'ggplot2':426 'go':191,265,377,616,698,732 'go.bar':772 'go.box':794 'go.candlestick':702 'go.figure':618,700 'go.histogram':785 'go.scatter':393,757 'go.surface':620 'grain':195,877 'graph':37,86,189,243 'graph-objects.md':869 'grid':447 'group':641,666 'guid':187,238,522 'heatmap':308,595 'height':803 'high':108,709,711,863 'high-level':107,862 'histogram':169,299,744,752 'hline':271 'hover':9,58,470,492 'hovertempl':496 'html':529,532,537,833 'html.div':849 'html.h1':850 'imag':311,545,555,559,563 'import':112,116,370,373,578,612,694,725,728,827,831,834 'includ':539 'individu':224 'info':10 'input':952 'instal':95,100,551,824 'integr':807 'interact':2,41,55,77,464,468,521,528,811,897 'isosurfac':208 'kaleido':547,552 'layout':260,355,457,802 'layouts-styling.md':888 'legend':176,448,478 'level':109,864,872 'librari':4,38 'limit':914 'line':167,182,292 'low':712,714,871 'low-level':870 'make':371,379,726,734 'map':321,323,326 'margin':449,642 'match':923 'matplotlib':30 'matrix':597,601 'measur':668 'mesh':207,333 'method':266 'minim':178 'miss':960 'multi':215,361,719 'multi-plot':360,718 'multi-trac':214 'name':840 'nbin':644 'need':8,54,171,220 'note':239 'notebook':70 'object':87,190,244,375,614,696,730 'offici':901 'ohlc':316 'ol':594 'open':706,708 'option':460,527,569,895 'organ':286 'output':932 'pan':12,60,475 'panda':117,160 'parallel':340 'pd':119 'pd.dataframe':121 'pdf':561 'permiss':953 'pie':294 'pip':99,550,823 'plot':1,35,83,96,101,105,142,148,204,240,281,301,362,417,422,424,583,611,647,661,720,816 'plotly-express.md':861 'plotly.com':904,909 'plotly.com/python-api-reference/':908 'plotly.com/python/':903 'plotly.express':113,579,835 'plotly.graph':374,613,695,729 'plotly.subplots':369,724 'plotlyj':540 'png':557 'point':650,658 'precis':221 'present':24,72 'price':686 'public':27,43 'publication-qu':42 'px':115,150,268,581,837 'px.box':652 'px.histogram':636 'px.imshow':599 'px.line':681 'px.scatter':133,253,410,510,587,842 'px.violin':663 'python':36,111,251,367,408,490,530,553,577,632,675,722,826 'qualiti':44 'quick':93,152,867 'rang':445 'rangeslid':482,502,505,679,689 'rdbu':608 'refer':859,907 'reference/chart-types.md':353 'reference/export-interactivity.md':524,571 'reference/graph-objects.md':235 'reference/layouts-styling.md':462 'reference/plotly-express.md':184 'requir':546,951 'resourc':900 'return':242 'review':944 'rich':76 'row':381,400,736,766,779,788,797 'safeti':954 'sankey':339 'scale':440,607 'scatter':166,291,322,582,742,748 'scatter3d':331 'scientif':33,306,574 'scientific-visu':32 'scope':925 'scratch':219 'seaborn':427 'see':183,234,352,461,523,570 'select':481 'sensibl':156 'sequenc':438 'seri':320,485,672,677 'server':856 'shape':231,275,454 'share':365 'showlegend':805 'simpl':428 'size':451 'skill':917 'skill-plotly' 'smaller':542 'source-sickn33' 'spec':746 'special':227,336 'specif':939 'standalon':535 'standard':153 'start':94 'static':26,544 'statist':297,630 'stop':945 'style':357,407,459 'subplot':358,372,380,385,727,735,740,889 'substitut':935 'success':957 'sunburst':337 'support':282 'surfac':332,610 'svg':565 'task':92,921 'temperatur':590 'templat':404,416,493,890 'ternari':310 'test':941 'text':443,602 'tick':446 'time':319,484,671,676 'titl':139,261,263,386,741 'toggl':479 'tooltip':471 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'trace':216,392,495,756,771,784,793 'treat':930 'treemap':338 'trendlin':585,593 'true':507,604,670,691,858 'type':49,165,201,280,285,351,747,749,751,753,885 'usag':103,347 'use':5,29,52,147,188,264,814,915 'uv':98,549,822 'valid':940 'valu':498,639,657 'violin':302,660 'visibl':506,690 'visual':3,34,45,91,154,199,228,328,576,868 'volum':335 'want':79,177 'waterfal':317 'web':15,62,812,818 'web-embedd':14 'white':423,429 'work':158 'workflow':573 'x':122,135,136,255,256,394,412,413,497,512,513,589,624,625,638,654,665,683,703,758,773,786,844,845 'xax':504,688 'y':127,137,138,257,258,272,397,414,415,499,514,515,591,627,628,656,667,685,762,776,795,846,847 'year':518 'yield':592 'z':621,622 'zoom':11,59,477","prices":[{"id":"752f8fc4-041d-467a-9745-71e61ddc0fc4","listingId":"e40e686e-9434-4caf-b573-e69985e562b4","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:42:29.552Z"}],"sources":[{"listingId":"e40e686e-9434-4caf-b573-e69985e562b4","source":"github","sourceId":"sickn33/antigravity-awesome-skills/plotly","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/plotly","isPrimary":false,"firstSeenAt":"2026-04-18T21:42:29.552Z","lastSeenAt":"2026-04-23T00:51:24.086Z"}],"details":{"listingId":"e40e686e-9434-4caf-b573-e69985e562b4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"plotly","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34616,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-22T06:40:00Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"4061ed59a61e3cf35dd5982e0ab8d83827c834c7","skill_md_path":"skills/plotly/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/plotly"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"plotly","license":"MIT license","description":"Interactive visualization library. Use when you need hover info, zoom, pan, or web-embeddable charts. Best for dashboards, exploratory analysis, and presentations. For static publication figures use matplotlib or scientific-visualization."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/plotly"},"updatedAt":"2026-04-23T00:51:24.086Z"}}