• Open Source.
    These libraries are free forever. Your Pro plan helps keep them top notch.
  • Share Online.
    Share charts, dashboards, Jupyter notebooks, and presentations through our enterprise-grade cloud.
  • Engineering Support.
    Get instant chat support from our awesome engineering team.
Show Sidebar Hide Sidebar

Plotly R Library

Plotly's R graphing library makes interactive, publication-quality graphs online. Examples of how to make line plots, scatter plots, area charts, bar charts, error bars, box plots, histograms, heatmaps, subplots, multiple-axes, polar charts and bubble charts.

$ 0 / mo
Open-source (MIT) & free forever

$ 33 / mo
Billed annually

Go Pro
Open Source MIT Licensed Pro Plans support our open-source work
Support Community Forum Email & Chat Support
Security Work offline in R Sync to enterprise-grade, private cloud
Sharing Share Charts as offline HTML files Share charts, dashboards, and Jupyter notebooks with secure 1-click links
Shiny Add interactive Plotly charts to your Shiny app Open charts from Shiny into Plotly for sharing, editing, & export
Design Style Plotly charts in R Touch up styling in online editor

Version 4:

We've recently released version 4 of our package on CRAN. Checkout this post for more information about changes and features available in this version!

d <- diamonds[sample(nrow(diamonds), 1000), ]
plot_ly(d, x = ~carat, y = ~price, color = ~carat,
        size = ~carat, text = ~paste("Clarity: ", clarity))

Plotly graphs are interactive:

Click-drag to zoom, shift-click to pan, double-click to autoscale.

ggplot2 Integration:

Know and love ggplot2? Try ggplotly

p <- ggplot(data = d, aes(x = carat, y = price)) +
  geom_point(aes(text = paste("Clarity:", clarity))) +
  geom_smooth(aes(colour = cut, fill = cut)) + facet_wrap(~ cut)


3D WebGL and more!

Although data frames can be thought of as the central object in this package, plotly visualizations don't actually require a data frame. This makes chart types that accept a z argument especially easy to use if you have a numeric matrix:

plot_ly(z = ~volcano, type = "surface")
Basic Charts
Statistical Charts
Scientific Charts
3D Charts
Add Custom Controls
Multiple Axes, Subplots, and Insets
Add Custom Controls with JavaScript

All Plotly charts have click, hover and zoom events exposed to add custom controls with Plotly's JavaScript postMessage API.

Layout Options
File Settings
Image Export & Retrieving Plots
Still need help?
Contact Us

For guaranteed 24 hour response turnarounds, upgrade to our Premium or Enterprise plans.