Interactive HTML Export in Julia
Plotly allows you to save interactive HTML versions of your figures to your local disk.
Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Try Plotly Studio now.
Note: We are retiring documentation for R, MATLAB, Julia, and F# in November 2025. Learn more about this change here.
Interactive vs Static Export
Plotly figures are interactive when viewed in a web browser: you can hover over data points, pan and zoom axes, and show and hide traces by clicking or double-clicking on the legend. You can export figures either to [static image file formats like PNG, JPEG, SVG or PDF] or you can export them to HTML files which can be opened in a browser. This page explains how to do the latter.
Saving to an HTML file
Any figure can be saved as an HTML file using the PlotlyBase.to_html
method. These HTML files can be opened in any web browser to access the fully interactive figure.
using PlotlyJS p = plot(scatter(x=1:10, y=1:10)) open("./example.html", "w") do io PlotlyBase.to_html(io, p.plot) end
nothing Controlling the size of the HTML file
By default, the resulting HTML file is a fully self-contained HTML file which can be uploaded to a web server or shared via email or other file-sharing mechanisms. The downside to this approach is that the file is very large (5Mb+) because it contains an inlined copy of the Plotly.js library required to make the figure interactive. This can be controlled via the include_plotlyjs
argument (see below).
Full Parameter Documentation
using PlotlyJS @doc PlotlyBase.to_html
to_html( io::IO, p::Plot; autoplay::Bool=true, include_plotlyjs::Union{String,Missing}="cdn", include_mathjax::Union{String,Missing}="cdn", post_script::Union{String,Missing}=missing, full_html::Bool=true, animation_opts::Union{Dict,Missing}=missing, default_width::String="100%", default_height::String="100%" )
io: IO stream to write to
p: Plot to save
autoplay: Should animations start automatically
include_plotlyjs: How to include plotly.js. Options are
cdn: include a <script> tag to load plotly.js from cdn. Output will be standalone
require: load using requirejs. Useful in Jupyter notebooks
require-loaded: assume a
plotly
statement has already loaded via requirejs (don't load it in context of this plot)directory: hardcode
<script src="plotly.min.js>
– will only work when the plotly.min.js file is in the same directory as the output fileanything ending in js: we assume you give us the path to the plotly.js file. We will read it in and include it inline in the output. Works best when points to a minified file (plotly.min.js)
include_mathjax: How mathjax should be included. Options are
string ending in .js: we load via
<script src="$(include_mathjax)">
. You are responsible for making sure it resolvesanything else: we load via cdn for you
post_script: arbitrary javascript to run after plotly.js finishes drawing the plot
full_html: include all parts necessary for standalone html file
animation_opts: extra options used to control animation. included in
addFrames
call after the actual frames. See plotly.js docs for more info onaddFrames
default_width: valid css specifier for width
default_height: valid css specifier for height