Coder Social home page Coder Social logo

plotly.jl's Introduction

Plotly.jl

Build Status

A Julia interface to the plot.ly plotting library and cloud services

Install

Simply run Pkg.add("Plotly").

Usage

Plotting functions provided by this package are identical to PlotlyJS. Please consult its documentation. In fact, the package depends on PlotlyJS.jl and reexports all the methods.

For example, this will display a basic scatter plot:

my_plot = plot([scatter(x=[1,2], y=[3,4])], Layout(title="My plot"))

Using the Plotly cloud

New user signup

Find your username and API key in the Plotly settings.

Signin

julia> Plotly.signin("username","your api key")
PlotlyAccount("username","your api key")

Note: you may also specify your session endpoints using sign in as follows:

julia> Plotly.signin("username","your api key",Dict("plotly_domain"=> "your_plotly_base_endpoint", "plotly_api_domain"=> "your_plotly_api_endpoint"))

Saving your credentials

julia> Plotly.set_credentials_file(Dict("username"=>"your_user_name","api_key"=>"your_api_key"))

Note: your credentials will be saved within /YOUR_HOME_DIR/.plotly/.credentials

Saving your endpoint configuration

julia> Plotly.set_config_file(Dict("plotly_domain"=> "your_plotly_base_endpoint", "plotly_api_domain"=> "your_plotly_api_endpoint"))

Note: your configuration will be saved within /YOUR_HOME_DIR/.plotly/.config

Saving a plot to the cloud

Use the post function to upload a local plot to the Plotly cloud:

> my_plot  = plot([scatter(y=[1,2])])
> remote_plot = post(my_plot)
Plotly.RemotePlot(URI(https://plot.ly/~malmaud/73))

Visiting https://plot.ly/~malmaud/73 in a browser will show the plot.

Download a plot from the cloud

Use the download function with a remote plot object to download a plot stored on the Plotly cloud to a local Plot object:

local_plot = download(RemotePlot("https://plot.ly/~malmaud/73"))
# or equivalently, local_plot = download_plot("https://plot.ly/~malmaud/73")

Working with plotlyjs() backend of Plots.jl

A plot created by Plots.jl with plotlyjs() backend has the type Plot{Plots.PlotlyJSBackend()}. To use the Plotly.jl interfeces, the plot object needs to be converted by

my_plot = Plots.plotlyjs_syncplot(plots_plot)

The object my_plot can be handed to the Cloud API descrived above.

Acknowledgements

PlotlyJS.jl , which provides the large majority of the functionality of this package, is developed primarily by Spencer Lyon.

This package, which adds to PlotlyJS.jl the functionality for interacting with the Plotly cloud, is developed by Jon Malmaud and others.

Contribute

Please do! This is an open source project. Check out the issues or open a PR!

We want to encourage a warm, welcoming, and safe environment for contributing to this project. See the code of conduct for more information.

License

MIT © 2016-2017 Shilei Zheng, Leah Hanson, Bryan A. Knowles, Chris Palmer, Jon Malmaud

plotly.jl's People

Contributors

adelq avatar astrieanna avatar bpostlethwaite avatar bronsolo avatar chriddyp avatar dilumaluthge avatar hewers avatar jackparmer avatar malmaud avatar menyoung avatar mmikhasenko avatar montyvesselinov avatar richardlitt avatar sglyon avatar shirlenator avatar snotskie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plotly.jl's Issues

DataFrames helpers discard options.

The helpers regarding DataFrames integration discard passed options.
E.g:

trace1 = Plotly.scatter(
      dataframe,
      { "name" => "TEST",
        "xs" => :idx,
        "ys" => :val })
# There shoud be a "name" => "TEST" in the result, however ..
println(trace1)
# ^- key "name" is not present.

I am not familiar with the language, but it looks like that the first few lines after
https://github.com/plotly/Plotly.jl/blob/master/src/plot.jl#L97
should call a merge(get_points(...)), but they instead just call get_points().

examples no longer works on v0.1.0 (but they do work on v0.0.3)

From https://plot.ly/julia/getting-started/

trace1 = [
  "x" => [1, 2, 3, 4],
  "y" => [10, 15, 13, 17],
  "type" => "scatter"
]
trace2 = [
  "x" => [1, 2, 3, 4],
  "y" => [16, 5, 11, 9],
  "type" => "scatter"
]

response = Plotly.plot([trace1, trace2], ["filename" => "basic-line", "fileopt" => "overwrite"])
plot_url = response["url"]

gives me

ERROR: MethodError: `convert` has no method matching convert(::Type{PlotlyJS.Plot{TT<:PlotlyJS.AbstractTrace}}, ::Array{Dict{ASCIIString,Any},1}, ::Dict{ASCIIString,ASCIIString})
This may have arisen from a call to the constructor PlotlyJS.Plot{TT<:PlotlyJS.AbstractTrace}(...),
since type constructors fall back to convert methods.
Closest candidates are:
  PlotlyJS.Plot{T<:PlotlyJS.AbstractTrace}(::Array{T<:PlotlyJS.AbstractTrace,1}, ::Any)
  PlotlyJS.Plot(::PlotlyJS.AbstractTrace, ::Any)
  call{T}(::Type{T}, ::Any)
  ...
 in call at essentials.jl:57
 in plot at /Users/johan/.julia/v0.4/PlotlyJS/src/display.jl:75

(I removed warnings about deprecated Dict syntax)

On v0.0.3 however it works as documented.

Fill between two lines

I'd like to request adding functionality to fill between two lines (instead of just to the x-axis). In Plots.jl, when I use the fillrange attribute, I get the following warning:

WARNING: fillrange ignored... plotly only supports filling to zero. fillrange: [10.1173,-1.86913,...]

Update repo metadata

Looking at the repository on GitHub, there's a few things that can be optimized:

  • Update the GitHub description to A Julia interface to the plot.ly plotting library and cloud services. It is more informative, and matches the description originally in the README.
  • I would add some topics to the repo.
  • Link to https://plot.ly/julia/

Compat problems

Plotly.jl does not have upper bounds listed on some of it's dependencies, notably HTTP.jl. Upper bounds have been introduced on all dependencies in general, c.f., https://github.com/JuliaRegistries/General/blob/master/P/Plotly/Compat.toml#L2
This causes some confusion when the package manager throws compatibility errors, e.g.,

(@v1.6) pkg> add ECharts#master
     Cloning git-repo `https://github.com/randyzwitch/ECharts.jl.git`
    Updating git-repo `https://github.com/randyzwitch/ECharts.jl.git`
   Resolving package versions...
ERROR: Unsatisfiable requirements detected for package Plotly [58dd65bb]:
 Plotly [58dd65bb] log:
 ├─possible versions are: 0.2.0-0.3.0 or uninstalled
 ├─restricted to versions * by an explicit requirement, leaving only versions 0.2.0-0.3.0
 └─restricted by compatibility requirements with HTTP [cd3eb016] to versions: uninstalled — no versions left
   └─HTTP [cd3eb016] log:
     ├─possible versions are: 0.6.10-0.9.7 or uninstalled
     └─restricted to versions 0.9 by ECharts [f9630f5b], leaving only versions 0.9.0-0.9.7
       └─ECharts [f9630f5b] log:
         ├─possible versions are: 0.6.0 or uninstalled
         └─ECharts [f9630f5b] is fixed to version 0.6.0

There is a conflict for HTTP but there is on reason listed.

It would be great if a new release of this package was made that lists proper compat bounds, including compat with the latest version of HTTP.

Plotly fails to build: no "src_attrs.csv" file

Using Julia 1.6.1 on macOS 11.3.1:

 julia> Pkg.precompile()
 Precompiling project...
   ✗ Plotly
   1 dependency successfully precompiled in 7 seconds (274 already precompiled)

 ERROR: The following 1 direct dependency failed to precompile:

 Plotly [58dd65bb-95f3-509e-9936-c39a10fdeae7]

 ERROR: LoadError: ArgumentError: Cannot open '/Users/glenhenshaw/.julia/packages/PlotlyJS/h3GxO/deps/src_attrs.csv': not a file

And, indeed, there is no such file at the location.

quiver throws error with null arrow

Hi, I am trying to plot a vector field, but plotly is throwing an error when the vector is zero. No problem with the gr backend, only with plotly. I don't know whether it is a but or there is an argument to avoid that. Here is what happens:

julia> gr()
Plots.GRBackend()

julia> quiver([0.0], [0.0], quiver=([0.0],[0.0]))

julia> plotly()
Plots.PlotlyBackend()

julia> quiver([0.0], [0.0], quiver=([1.0],[1.0]))

julia> quiver([0.0], [0.0], quiver=([0.0],[0.0]))
Error showing value of type Plots.Plot{Plots.PlotlyBackend}:
ERROR: UndefRefError: access to undefined reference

I can show the full stack error if it helps. I am using Julia 1.5.3 and Plots 0.3.0

Got errors when running the example in tutorial

ENV

  1. julia 1.2
    (v1.2) pkg> status
    Status ~/.julia/environments/v1.2/Project.toml
    [31a5f54b] Debugger v0.6.2
    [28b8d3ca] GR v0.44.0
    [cd3eb016] HTTP v0.8.8 #master (/root/HTTP.jl)
    [7073ff75] IJulia v1.20.2
    [41391dba] InfluxDB v0.1.0 #master (https://github.com/staticfloat/InfluxDB.jl.git)
    [0f8b85d8] JSON3 v0.1.13
    [a93385a2] JuliaDB v0.13.0
    [ee78f7c6] Makie v0.9.5
    [a15396b6] OnlineStats v1.0.2
    [58dd65bb] Plotly v0.2.0
    [91a5bcdd] Plots v0.27.1
    [92933f4c] ProgressMeter v1.2.0
    [438e738f] PyCall v1.91.2
    [d330b81b] PyPlot v2.8.2
    [104b5d7c] WebSockets v1.5.2+ #master (/root/WebSockets.jl/)

ISSUE:

Plotly.set_credentials_file({“username”=>“DemoAccount”,“api_key”=>“lr1c37zw81”})
ERROR: syntax: { } vector syntax is discontinued

Here , I have replaced the username and api_key with my own one

[discussion] combining with Plotly&PlotlyJS

Thank you so much for the package. I just posted my plotly figure online, finally, after several days of struggling.
The posting functionality was very hard to find since I started from plotlyjs.

Is there a reason to keep the package separate from plotlyjs?
Interestingly the plotting script that I wrote with using PlotlyJS just worked once I replaced the input using Plotly

Register package

I got an email from @astrieanna (owner of the original repo) that it's fine for us to go ahead and register this package with Julia's METADATA.

First thing will be to rename it to Plotly.jl

Next, follow the package registration workflow. Here is some documentation on how to do this. It's fairly straightforward.

I'll keep tabs on it and merge it once it gets up, and manage any quirks if they come up.

pie chart is showing nothing

Basic plotting is working (interactive):

Plotly.plot(rand(10), rand(10))

And plotly backend works in Plots (noninteractive, opens in browser):

using Plots
plotly()
x = ["Nerds", "Hackers", "Scientists"]
y = [0.4, 0.35, 0.25]
pie(x, y, title = "The Julia Community", l = 0.5)

However, pie charts in Plotly gives out a blank output:

using Plotly
x = ["Nerds", "Hackers", "Scientists"]
y = [0.4, 0.35, 0.25]
data = Dict(x .=> y)
Plotly.plot(pie(data, title = "The Julia Community", l = 0.5))

image
This is totally weird!

Some info that might be useful:

julia> versioninfo()
Julia Version 1.4.1
Commit 381693d3df* (2020-04-14 17:20 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-4940MX CPU @ 3.10GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, haswell)
Environment:
  JULIA_DEPOT_PATH = F:\Julia-1.4.0\.julia;F:\Julia-1.4.0\local\share\julia;F:\Julia-1.4.0\share\julia;
  JULIA_NUM_THREADS = 8
  JULIA_REVISE_INCLUDE = 1
  JULIA_REVISE_POLL = 1

(@v1.4) pkg> st Plotly
Status `F:\Julia-1.4.0\.julia\environments\v1.4\Project.toml`
  [58dd65bb] Plotly v0.3.0

Could this package here not be marked as a fork?

Currently plotly/Plotly.jl appears as a fork of shirlenator/Plotly.jl on github. Given that plotly/Plotly.jl is going to be the authoritative master repo for this project, it would be nice if that fork designation was removed.

My understanding is that the owner of plotly/Plotly.jl just has to contact the github support and they will remove the fork link.

Update for higher version Julia?

In my 1.3.1 Julia, I try this office doc, but obviously some thing is not support by my julia. So I think it's time to updating for higher version Julia?

julia> versioninfo()
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Genuine Intel(R) CPU 0000 @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, skylake)

julia> using Plotly

julia>

julia>

julia> data = [
         [
           "x" => [0, 1, 2],
               "y" => [6, 10, 2],
           "error_y" => [
             "type" => "data",
             "array" => [1, 2, 3],
             "visible" => true
           ],
           "type" => "scatter"
         ]
       ]
1-element Array{Array{Pair{String,Any},1},1}:
 ["x" => [0, 1, 2], "y" => [6, 10, 2], "error_y" => Pair{String,Any}["type" => "data", "array" => [1, 2, 3], "visible" => true], "type" => "scatter"]

julia> response = Plotly.plot(data, ["filename" => "basic-error-bar", "fileopt" => "overwrite"])
ERROR: MethodError: no method matching Plot(::Array{Array{Pair{String,Any},1},1}, ::Array{Pair{String,String},1})
Closest candidates are:
  Plot(::AbstractArray{T,1}, ::AbstractArray{T,1} where T) where T<:Union{Dates.Date, Dates.DateTime, AbstractString, Number, Symbol} at C:\Users\WeiM\.julia\packages\PlotlyBase\80KwD\src\convenience_api.jl:20
  Plot(::AbstractArray{T,1}, ::AbstractArray{T,1} where T, ::Layout; kind, style, kwargs...) where T<:Union{Dates.Date, Dates.DateTime, AbstractString, Number, Symbol} at C:\Users\WeiM\.julia\packages\PlotlyBase\80KwD\src\convenience_api.jl:20
  Plot(::AbstractArray{T,1}, ::AbstractArray{T,2} where T) where T<:(AbstractArray{T,1} where T) at C:\Users\WeiM\.julia\packages\PlotlyBase\80KwD\src\convenience_api.jl:32
  ...
Stacktrace:
 [1] #plot#6(::Dict{Any,Any}, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(plot), ::Array{Array{Pair{String,Any},1},1}, ::Vararg{Any,N} where N) at C:\Users\WeiM\.julia\packages\PlotlyJS\AhkM5\src\display.jl:145
 [2] plot(::Array{Array{Pair{String,Any},1},1}, ::Vararg{Any,N} where N) at C:\Users\WeiM\.julia\packages\PlotlyJS\AhkM5\src\display.jl:145
 [3] top-level scope at REPL[4]:1

julia> plot_url = response["url"]
ERROR: UndefVarError: response not defined
Stacktrace:
 [1] top-level scope at REPL[5]:1

Even the command in the readme.md file of this project will give me a line chart?

my_plot = plot([scatter(x=[1,2], y=[3,4])], Layout(title="My plot"))

newplot

Plots not visible on github

I tried displaying in jupyter notebook which works fine on my local machine but when I upload the notebook on Github it is not displayed. I even tried nbviewer but there it shows just a blank space.

Problems with SSL CA cert

Using Anaconda with Julia 0.3.11 (IJulia) on Windows 10. Plotly.plot(data...) returns: Error executing request : Problem with the SSL CA cert (path? access rights?)

Julia 1.0/0.7 support?

WARNING: importing deprecated binding Base.Nullable into Requests.
ERROR: LoadError: LoadError: TypeError: in Type{...} expression, expected UnionAll, got typeof(Base.Nullable)
Stacktrace:
 [1] top-level scope at none:0
 [2] include at ./boot.jl:317 [inlined]
 [3] include_relative(::Module, ::String) at ./loading.jl:1038
 [4] include at ./sysimg.jl:29 [inlined]
 [5] include(::String) at /.julia/packages/Requests/Mqwx0/src/Requests.jl:2
 [6] top-level scope at none:0
 [7] include at ./boot.jl:317 [inlined]
 [8] include_relative(::Module, ::String) at ./loading.jl:1038
 [9] include(::Module, ::String) at ./sysimg.jl:29
 [10] top-level scope at none:2
 [11] eval at ./boot.jl:319 [inlined]
 [12] eval(::Expr) at ./client.jl:399
 [13] top-level scope at ./none:3

precompiled warnings in Julia 0.5

I'm using Plots.jl in a precompiled module on Julia 0.5. After initializing the backend as plotly with plotlyjs(), warnings happen.

WARNING: eval from module Plots to Molcajete:
Expr(:block, Expr(:line, 29, :/Users/user/.julia/v0.5/Plots/src/backends/plotlyjs.jl)::Any, Expr(:import, :PlotlyJS)::Any, Expr(:line, 30, :/Users/user/.julia/v0.5/Plots/src/backends/plotlyjs.jl)::Any, Expr(:export, :PlotlyJS)::Any)::Any
  ** incremental compilation may be broken for this module **

WARNING: using Lazy.remove in module AtomShell conflicts with an existing identifier.
WARNING: eval from module PlotlyJS to Plots:
Expr(:call, :SyncPlot, Expr(:::, :p, :Plot)::Any)::Any = Expr(:block, Expr(:line, 145, :/Users/user/.julia/v0.5/PlotlyJS/src/PlotlyJS.jl)::Any, Expr(:call, :SyncPlot, :p, Expr(:call, :ElectronDisplay, :p)::Any)::Any)::Any
  ** incremental compilation may be broken for this module **

Version info:

> versioninfo()
Julia Version 0.5.0
Commit 3c9d753* (2016-09-19 18:14 UTC)
Platform Info:
  System: Darwin (x86_64-apple-darwin15.6.0)
  CPU: Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz
  WORD_SIZE: 64
  BLAS: libopenblas (DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.7.1 (ORCJIT, broadwell)
> Pkg.status("Plotly")
 - Plotly                        0.1.1

Bulid breaking on 1.0.0

Build breaks on Julia 1.0.0. The issue appears to be with HttpParser and an old-style docstring somewhere in PlotlyJS.

The issue with HttpParser has been reported here JuliaWeb/HttpParser.jl#89

(v1.0) pkg> add Plotly
 Resolving package versions...
 Installed FunctionalCollections ─ v0.4.0
 Installed Mux ─────────────────── v0.5.1
 Installed HttpParser ──────────── v0.4.0
 Installed Plotly ──────────────── v0.1.1
 Installed HttpCommon ──────────── v0.5.0
 Installed Mustache ────────────── v0.4.1
 Installed PlotlyBase ──────────── v0.1.2
 Installed WebIO ───────────────── v0.3.0
 Installed JSExpr ──────────────── v0.3.0
 Installed IniFile ─────────────── v0.5.0
 Installed Libz ────────────────── v1.0.0
 Installed HTTP ────────────────── v0.6.14
 Installed LaTeXStrings ────────── v1.0.2
 Installed WebSockets ──────────── v1.0.0
 Installed Blink ───────────────── v0.8.0
 Installed AssetRegistry ───────── v0.0.2
 Installed Pidfile ─────────────── v1.1.0
 Installed Requests ────────────── v0.5.1
 Installed Observables ─────────── v0.2.2
 Installed Nullables ───────────── v0.0.7
 Installed Hiccup ──────────────── v0.2.2
 Installed Lazy ────────────────── v0.13.0
 Installed BufferedStreams ─────── v1.0.0
 Installed Codecs ──────────────── v0.5.0
 Installed MbedTLS ─────────────── v0.6.0
 Installed Widgets ─────────────── v0.4.0
 Installed PlotlyJS ────────────── v0.10.2
  Updating `~/.julia/environments/v1.0/Project.toml`
  [58dd65bb] + Plotly v0.1.1
  Updating `~/.julia/environments/v1.0/Manifest.toml`
  [bf4720bc] + AssetRegistry v0.0.2
  [ad839575] + Blink v0.8.0
  [e1450e63] + BufferedStreams v1.0.0
  [19ecbf4d] + Codecs v0.5.0
  [de31a74c] + FunctionalCollections v0.4.0
  [cd3eb016] + HTTP v0.6.14
  [9fb69e20] + Hiccup v0.2.2
  [77172c1b] + HttpCommon v0.5.0
  [38bc9a14] + HttpParser v0.4.0
  [83e8ac13] + IniFile v0.5.0
  [97c1335a] + JSExpr v0.3.0
  [b964fa9f] + LaTeXStrings v1.0.2
  [50d2b5c4] + Lazy v0.13.0
  [2ec943e9] + Libz v1.0.0
  [739be429] + MbedTLS v0.6.0
  [ffc61752] + Mustache v0.4.1
  [a975b10e] + Mux v0.5.1
  [4d1e1d77] + Nullables v0.0.7
  [510215fc] + Observables v0.2.2
  [fa939f87] + Pidfile v1.1.0
  [58dd65bb] + Plotly v0.1.1
  [a03496cd] + PlotlyBase v0.1.2
  [f0f68f2c] + PlotlyJS v0.10.2
  [df88083b] + Requests v0.5.1
  [0f1e0344] + WebIO v0.3.0
  [104b5d7c] + WebSockets v1.0.0
  [cc8bc4a8] + Widgets v0.4.0
  [7b1f6079] + FileWatching
  Building WebIO ─────→ `~/.julia/packages/WebIO/ukomf/deps/build.log`
  Building HttpParser → `~/.julia/packages/HttpParser/yGK3a/deps/build.log`
┌ Error: Error building `HttpParser`:
│ ERROR: LoadError: UndefVarError: is_windows not defined
│ Stacktrace:
│  [1] top-level scope at none:0
│  [2] include at ./boot.jl:317 [inlined]
│  [3] include_relative(::Module, ::String) at ./loading.jl:1038
│  [4] include(::Module, ::String) at ./sysimg.jl:29
│  [5] include(::String) at ./client.jl:388
│  [6] top-level scope at none:0
│ in expression starting at /Users/jmerrill3/.julia/packages/HttpParser/yGK3a/deps/build.jl:10
└ @ Pkg.Operations /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068
  Building MbedTLS ───→ `~/.julia/packages/MbedTLS/Qo8TN/deps/build.log`
  Building Blink ─────→ `~/.julia/packages/Blink/KMJt9/deps/build.log`
  Building PlotlyJS ──→ `~/.julia/packages/PlotlyJS/i6J4s/deps/build.log`
┌ Error: Error building `PlotlyJS`:
│   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
│                                  Dload  Upload   Total   Spent    Left  Speed
100 1329k  100 1329k    0     0   985k      0  0:00:01  0:00:01 --:--:--  985k
│   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
│                                  Dload  Upload   Total   Spent    Left  Speed
100 2727k  100 2727k    0     0  9317k      0 --:--:-- --:--:-- --:--:-- 9341k
│ ERROR: LoadError: LoadError: UndefVarError: Markdown not defined
│ Stacktrace:
│  [1] include at ./boot.jl:317 [inlined]
│  [2] include_relative(::Module, ::String) at ./loading.jl:1038
│  [3] include(::Module, ::String) at ./sysimg.jl:29
│  [4] include(::String) at ./client.jl:388
│  [5] top-level scope at none:0
│  [6] include at ./boot.jl:317 [inlined]
│  [7] include_relative(::Module, ::String) at ./loading.jl:1038
│  [8] include(::Module, ::String) at ./sysimg.jl:29
│  [9] include(::String) at ./client.jl:388
│  [10] top-level scope at none:0
│ in expression starting at /Users/jmerrill3/.julia/packages/PlotlyJS/i6J4s/deps/make_schema_docs.jl:3
│ in expression starting at /Users/jmerrill3/.julia/packages/PlotlyJS/i6J4s/deps/build.jl:10
└ @ Pkg.Operations /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068

Failed to precompile module Requests

I've succesfully installed Plotly, but when it's precompiling the following error shows up. I've already checked the Requests package and it says the package is no longer maintained and has reduced functionality

julia> using Plotly
INFO: Precompiling module Requests.
ERROR: LoadError: error compiling init: error compiling init_streaming: error compiling get_default_tls_config: error compiling Type: could not load library "C:\Users\Sara.julia\v0.6\MbedTLS\src..\deps\usr\bin\libmbedtls.dll"

Stacktrace:
[1] include_from_node1(::String) at .\loading.jl:576
[2] include(::String) at .\sysimg.jl:14
[3] anonymous at .<missing>:2
while loading C:\Users\Sara.julia\v0.6\Requests\src\Requests.jl, in expression starting on line 419
ERROR: LoadError: Failed to precompile Requests to C:\Users\Sara.julia\lib\v0.6\Requests.ji.
Stacktrace:
[1] compilecache(::String) at .\loading.jl:710
[2] _require(::Symbol) at .\loading.jl:497
[3] require(::Symbol) at .\loading.jl:405
[4] include_from_node1(::String) at .\loading.jl:576
[5] eval(::Module, ::Any) at .\boot.jl:235
[6] _require(::Symbol) at .\loading.jl:490
[7] require(::Symbol) at .\loading.jl:405
while loading C:\Users\Sara.julia\v0.6\Plotly\src\Plotly.jl, in expression starting on line 6

show bitmap ?

is there any support to show bitmap images? similar with imshow in matplotlib and matlab.

Pkg.installed() was deleted; don't use it (ERROR: UndefVarError: installed not defined)

Precompiling Plotly.jl on current trunk gives:

ERROR: UndefVarError: installed not defined

Why? Because of the line in v2.jl

const _VERSION = string(Pkg.installed()["Plotly"])

There is no Pkg.installed anymore.

The next highly experimental feature seems to be Pkg.dependencies(), hence something like this:

const _VERSION = first(filter( kv_pair -> kv_pair.second.name == "Plotly", Pkg.dependencies())).second.version

I definitely hope, some Julia-Pkg-master finds a better solution for something simple like: Find the version of a installed package by name.

Looking for community maintainers!

Plotly does not have Julia expertise and we are looking for Julia community maintainers who are interested in working in consultation with the Plotly team to review and merge pull requests. If you are interested ping me on this thread or email me at ben at plot.ly

Thanks!

Plotly.jl is holding back updates of PlotlyBase and PlotlyJS

With Plotly.jl v0.4.0 installed, PlotlyBase is stuck on v0.5.4 and PlotlyJS is stuck on 0.14.1.
When I remove Plotly, PlotlyBase is able to upgrade to v0.8.18 and PlotlyJS goes to v0.18.8.

Is there any reason for holding the versions back for PlotlyBase and PlotlyJS?

I'm running Julia 1.7rc1. The same is true for Julia 1.6.3.

Error building Plotly

I get an error when I try to run build Plotly, see below:

(v1.1) pkg> add Plotly
Updating registry at ~/.julia/registries/General
Updating git-repo https://github.com/JuliaRegistries/General.git
Resolving package versions...
Updating ~/.julia/environments/v1.1/Project.toml
[58dd65bb] + Plotly v0.2.0
Updating ~/.julia/environments/v1.1/Manifest.toml
[ad839575] + Blink v0.10.1
[ffbed154] + DocStringExtensions v0.7.0
[97c1335a] + JSExpr v0.5.0
[ffc61752] + Mustache v0.5.11
[a975b10e] + Mux v0.7.0
[58dd65bb] + Plotly v0.2.0
[a03496cd] + PlotlyBase v0.2.5
[f0f68f2c] + PlotlyJS v0.12.3

(v1.1) pkg> build Plotly
Building MbedTLS ─→ ~/.julia/packages/MbedTLS/X4xar/deps/build.log
Building WebIO ───→ ~/.julia/packages/WebIO/7G1ZY/deps/build.log
Building Blink ───→ ~/.julia/packages/Blink/1QOOi/deps/build.log
Building PlotlyJS → ~/.julia/packages/PlotlyJS/CEJyh/deps/build.log
┌ Error: Error building PlotlyJS:
│ dyld: Library not loaded: @rpath/libssl.1.0.0.dylib
│ Referenced from: /Users//anaconda3/lib/libssh2.1.dylib
│ Reason: image not found
│ ERROR: LoadError: failed process: Process(curl -g -L -f -o /Users/my-user/.julia/packages/PlotlyJS/CEJyh/deps/plotschema.json 'https://api.plot.ly/v2/plot-schema?sha1', ProcessSignaled(6)) [0]
│ Stacktrace:
│ [1] error(::String, ::Base.Process, ::String, ::Int64, ::String) at ./error.jl:42
│ [2] pipeline_error at ./process.jl:785 [inlined]
│ [3] #run#515(::Bool, ::Function, ::Cmd) at ./process.jl:726
│ [4] run at ./process.jl:724 [inlined]
│ [5] download(::String, ::String) at ./download.jl:27
│ [6] top-level scope at none:0
│ [7] include at ./boot.jl:326 [inlined]
│ [8] include_relative(::Module, ::String) at ./loading.jl:1038
│ [9] include(::Module, ::String) at ./sysimg.jl:29
│ [10] include(::String) at ./client.jl:403
│ [11] top-level scope at none:0
│ in expression starting at /Users/my-user/.julia/packages/PlotlyJS/CEJyh/deps/build.jl:7
└ @ Pkg.Operations /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Operations.jl:1075

plotly() as backend to Plots.jl not working

I'm trying to get plotly to work as a backend to Plots.jl but have no luck with either Julia 0.7, Julia 1.01 or Julia 1.10.

With Julia 0.7, I get no error messages but no plots display (blank canvas).

With both Julia 1.01 and 1.10, I get the following error message:
"only png or svg allowed. got: :html"

I'm using this in a Jupyter notebook (Anaconda install) in google chrome browser.

label does not accept list of string

with GR backend, if the label is a list of string, it can display it correctly
image

when using plotly backend, if the the label is a list of string, it will ignore and use trace1..
image

JSON Encoder - TimeSeries

The Python Plotly library supports plotting several objects which can't be encoded into JSON with the default JSON encoder: datetime, Pandas.Series, numpy.ndarray. We should do the same for the Julia package, so that you can use objects from packages like TimeSeries directly in the Dicts that describe plotly graphs, e.g.

dates = [Date(2012,5,29):Date(2013,5,29)]
trace1 = [
  "x" => dates, 
  "y" => rand(length(dates),1), 
  "type" => "scatter"
]

This would involve inspecting the object here: https://github.com/plotly/Plotly-Julia/blob/master/src/Plotly.jl#L68 and converting any non-native objects to their plotly-accepted JSON format.

Here is the Plotly-Python JSON encoder: https://github.com/plotly/python-api/blob/master/plotly/utils.py#L116-L257

And it's usage: https://github.com/plotly/python-api/blob/master/plotly/plotly/plotly.py#L1209-L1210

ERROR: The type of request made is not a POST. Please try again.

The thing is I already signed up. And I was just pasting code from the README and those from https://plot.ly/julia/text-and-annotations/. But it kept returning the following error.

julia> response = Plotly.plot(data, ["layout" => layout, "filename" => "text-chart-basic", "fileopt" => "overwrite"])
ERROR: The type of request made is not a POST. Please try again.
 in error at error.jl:21
 in plot at /home/pan/.julia/v0.3/Plotly/src/Plotly.jl:74

Am I suppose to do something more? Can you help to figure what does the error mean?
Here is some version information. (Already run Pkg.update())

julia> versioninfo()
Julia Version 0.3.5
Commit a05f87b* (2015-01-08 22:33 UTC)
Platform Info:
  System: Linux (x86_64-linux-gnu)
  CPU: Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.3

Images only show on first facet

When using facet_col, images added to the layout only are put in the first facet:

using PlotlyJS, CSV, DataFrames

df = dataset(DataFrame, "iris")
sources = [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Iris_setosa_var._setosa_%282595031014%29.jpg/360px-Iris_setosa_var._setosa_%282595031014%29.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Iris_versicolor_quebec_1.jpg/320px-Iris_versicolor_quebec_1.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Iris_virginica_2.jpg/480px-Iris_virginica_2.jpg",
]
layout = Layout(
    images = [
        attr(
            row=1,
            col=col + 1,
            source=src,
            xref="x domain",
            yref="y domain",
            x=1,
            y=1,
            xanchor="right",
            yanchor="top",
            sizex=0.2,
            sizey=0.2,
        )
    for (col, src) in enumerate(sources)]
)
plot(
    df,
    kind="scatter",
    mode="markers",
    x=:sepal_length,
    y=:sepal_width,
    facet_col=:species,
    layout
)

Plot selected/unselected attribute not working

Problem
Nothing happens when passing in a marker object into selected/unselected variable

I'm trying to edit code from the tutorial here: https://dash-julia.plotly.com/interactive-graphing.

At the very bottom, there is code which seems to suggest you can edit properties of selected and unselected points. However when I try to edit the marker = ... line, nothing happens

Code

using DataFrames, Dash, DashHtmlComponents, DashCoreComponents, PlotlyJS

df4 = DataFrame(rand(30, 2), :auto)
plot(
    df4, x=:x1, y=:x2,
    mode="event+markers+text",
    marker_size=20,
    text=1:size(df4)[1],
    selectedpoints=selectedpoints,
    unselected=(
        marker=(opacity=0.1, size=55, textfont_color = "rgba(0,0,0,0)")
    )
)

The documentation here https://plotly.com/julia/reference/scatter/#scatter-selected also seems to suggest you can pass in a dictionary, and i have tried

unselected = Dict("size"=>40)

but this time I get an error which goes

ERROR: LoadError: MethodError: no method matching setindex!(::PlotlyBase.PlotlyAttribute{Dict{Symbol, Any}}, ::Int64, ::Missing, ::Symbol, ::String)

Plots overwrite each other in IJulia

When using IJulia and plotting with Plotly as backend to plots, plots after the first one seem to overwrite the first plot rather than creating a new plot. Example

# Cell 1
plot(randn())
# Output a nice plot

# cell 2
plot(randn(10))
# no output, plot after cell 1 overwritten instead

Versioninfo
Julia v1.3.0
Plotly v0.3.0

Type is not a valid key

Version info:

Julia Version 0.6.0-dev.1133
Commit 97ca164 (2016-10-27 03:53 UTC)
Platform Info:
  OS: Linux (x86_64-redhat-linux)
  CPU: Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.7.1 (ORCJIT, ivybridge)

When I try to plot 3d

julia> surface(Dict(["z"=>[2 3 4 5; 1 2 4 5; 1 1 2 4]]))

Then comes the error that type is not a valid key. I think there must be a conflict with type which should be "type" a String.

LoadError: ArgumentError: type is not a valid key for type String
while loading In[18], in expression starting on line 1

 in setindex!(::Dict{String,Array{Float64,2}}, ::String, ::Symbol) at ./dict.jl:388
 in #GenericTrace#1 at /home/iapellaniz/.julia/v0.6/PlotlyJS/src/traces_layouts.jl:11 [inlined]
 in Type at /home/iapellaniz/.julia/v0.6/PlotlyJS/src/traces_layouts.jl:11 [inlined]
 in #surface#93(::Array{Any,1}, ::Function, ::Dict{String,Array{Float64,2}}) at /home/iapellaniz/.julia/v0.6/PlotlyJS/src/api.jl:24
 in surface(::Dict{String,Array{Float64,2}}) at /home/iapellaniz/.julia/v0.6/PlotlyJS/src/api.jl:24

Very Long Precompile

I'm having an issue where Plotly.jl either takes an extremely long time to precompile (more than 12 hours), or it's hanging. All the other packages I'm using install fine. Any advice on resolving this issue, or getting more verbose output?

Failed to add in Julia JuliaPro 1.0.1.1

Dear Community!
I am new to Julia and not very experienced in programming. I use Julia pro JuliaPro 1.0.1.1 downloaded from Juliacomputing.com under Windows 10 Home and I am getting the following message:

Can yout help me or do you have any advice on how to proceed?


julia> Pkg.add("Plotly")
Resolving package versions...
ERROR: Unsatisfiable requirements detected for package Blink [ad839575]:
Blink [ad839575] log:
├─possible versions are: [0.1.0-0.1.5, 0.2.0-0.2.1, 0.3.0-0.3.5, 0.4.0-0.4.4, 0.5.0-0.5.4, 0.6.0-0.6.2, 0.7.0, 0.8.0] or uninstalled
├─restricted by compatibility requirements with WebSockets [104b5d7c] to versions: 0.1.0-0.1.5 or uninstalled
│ └─WebSockets [104b5d7c] log:
│ ├─possible versions are: [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0, 1.0.0-1.0.3] or uninstalled
│ ├─restricted by julia compatibility requirements to versions: 1.0.0-1.0.3 or uninstalled
│ └─restricted by compatibility requirements with HTTP [cd3eb016] to versions: [0.0.1-0.0.6, 0.1.0-0.1.2, 0.2.0-0.2.3, 0.3.0, 0.4.0, 0.5.0] or uninstalled, leaving only versions: uninstalled
│ └─HTTP [cd3eb016] log:
│ ├─possible versions are: 0.7.0 or uninstalled
│ └─restricted by compatibility requirements with Plotly [58dd65bb] to versions: 0.7.0
│ └─Plotly [58dd65bb] log:
│ ├─possible versions are: [0.0.1-0.0.3, 0.1.0-0.1.1, 0.2.0] or uninstalled
│ ├─restricted to versions * by an explicit requirement, leaving only versions [0.0.1-0.0.3, 0.1.0-0.1.1, 0.2.0]
│ └─restricted by julia compatibility requirements to versions: 0.2.0 or uninstalled, leaving only versions: 0.2.0
└─restricted by compatibility requirements with PlotlyJS [f0f68f2c] to versions: [0.3.3-0.3.5, 0.4.0-0.4.4, 0.5.0-0.5.4, 0.6.0-0.6.2, 0.7.0, 0.8.0] — no versions left
└─PlotlyJS [f0f68f2c] log:
├─possible versions are: [0.1.0-0.1.4, 0.2.0, 0.3.0-0.3.3, 0.4.0-0.4.3, 0.5.0-0.5.2, 0.6.0-0.6.5, 0.7.0-0.7.1, 0.8.0-0.8.3, 0.9.0, 0.10.0-0.10.3, 0.11.0-0.11.1] or uninstalled
├─restricted by compatibility requirements with JSON [682c06a0] to versions: [0.3.2-0.3.3, 0.4.0-0.4.3, 0.5.0-0.5.2, 0.6.0-0.6.5, 0.7.0-0.7.1, 0.8.0-0.8.3, 0.9.0, 0.10.0-0.10.3, 0.11.0-0.11.1] or uninstalled
│ └─JSON [682c06a0] log:
│ ├─possible versions are: [0.1.0-0.1.1, 0.2.0-0.2.4, 0.3.0-0.3.9, 0.4.0-0.4.6, 0.5.0-0.5.4, 0.6.0-0.6.1, 0.7.0-0.7.1, 0.8.0-0.8.3, 0.9.0-0.9.1, 0.10.0, 0.11.0, 0.12.0, 0.13.0, 0.14.0, 0.15.0-0.15.2, 0.16.0-0.16.4, 0.17.1-0.17.2, 0.18.0, 0.19.0] or uninstalled
│ └─restricted to versions 0.19.0 by an explicit requirement, leaving only versions 0.19.0
├─restricted by compatibility requirements with DataFrames [a93c6f00] to versions: [0.8.0-0.8.3, 0.9.0, 0.10.0-0.10.3, 0.11.0-0.11.1] or uninstalled
│ └─DataFrames [a93c6f00] log:
│ ├─possible versions are: [0.1.0, 0.2.0-0.2.5, 0.3.0-0.3.16, 0.4.0-0.4.3, 0.5.0-0.5.12, 0.6.0-0.6.11, 0.7.0-0.7.8, 0.8.0-0.8.5, 0.9.0-0.9.1, 0.10.0-0.10.1, 0.11.0-0.11.7, 0.12.0, 0.13.0-0.13.1, 0.14.0-0.14.1] or uninstalled
│ └─restricted to versions 0.14.1 by an explicit requirement, leaving only versions 0.14.1
└─restricted by compatibility requirements with Plotly [58dd65bb] to versions: [0.2.0, 0.3.0-0.3.3, 0.4.0-0.4.3, 0.5.0-0.5.2, 0.6.0-0.6.5, 0.7.0-0.7.1, 0.8.0-0.8.3, 0.9.0, 0.10.0-0.10.3, 0.11.0-0.11.1], leaving only versions: [0.8.0-0.8.3, 0.9.0, 0.10.0-0.10.3, 0.11.0-0.11.1]
└─Plotly [58dd65bb] log: see above
Stacktrace:
[1] #propagate_constraints!#61(::Bool, ::Function, ::Pkg.GraphType.Graph, ::Set{Int64}) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\GraphType.jl:1005
[2] propagate_constraints! at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\GraphType.jl:946 [inlined]
[3] #simplify_graph!#121(::Bool, ::Function, ::Pkg.GraphType.Graph, ::Set{Int64}) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\GraphType.jl:1460
[4] simplify_graph! at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\GraphType.jl:1460 [inlined]
[5] macro expansion at .\logging.jl:319 [inlined]
[6] resolve_versions!(::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}, ::Nothing) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\Operations.jl:343
[7] resolve_versions! at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\Operations.jl:306 [inlined]
[8] #add_or_develop#60(::Array{Base.UUID,1}, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\Operations.jl:1205
[9] #add_or_develop at .\none:0 [inlined]
[10] #add_or_develop#13(::Symbol, ::Bool, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Pkg.Types.Context, ::Array{Pkg.Types.PackageSpec,1}) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\API.jl:64
[11] #add_or_develop at .\none:0 [inlined]
[12] #add_or_develop#12 at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\API.jl:29 [inlined]
[13] #add_or_develop at .\none:0 [inlined]
[14] #add_or_develop#11 at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\API.jl:28 [inlined]
[15] #add_or_develop at .\none:0 [inlined]
[16] #add_or_develop#10 at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\API.jl:27 [inlined]
[17] #add_or_develop at .\none:0 [inlined]
[18] #add#18 at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\API.jl:69 [inlined]
[19] add(::String) at C:\Users\julia\AppData\Local\Julia-1.0.1\share\julia\stdlib\v1.0\Pkg\src\API.jl:69
[20] top-level scope at none:0


Integrate various plotly packages

I just looked around a bit for a plotly package, and after a short google, I came across at least four:

https://github.com/plotly/Plotly.jl
https://github.com/joshday/PlotlyLocal.jl
https://github.com/EricForgy/PlotlyJS.jl
https://github.com/spencerlyon2/Plotlyjs.jl

The last three seem to be based on the recently released JS package, i.e. they take a local approach. To me they all seem to try to do the same thing (maybe wrong?).

Maybe there could be some coordination, and an attempt to have one high quality plotly package at the end that provides both the local JS type usage model and the old web based approach, and ideally all of that would be in this package here, which seems the most official one?

No plots upon notebook refresh

When I create fresh notebook plots works just fine. But when i reopen them, the output cell is empty.

I've tried calling using Plotly and using PlotlyJS once in the first cell and plot in other cells. None of them worked.

The errors I get from linux console:

[W 15:06:46.107 NotebookApp] 404 GET /static/plotly.js?v=20161201150641 (127.0.0.1) 15.30ms referer=http://localhost:8888/notebooks/program.ipynb
Starting kernel event loops.
[W 15:07:48.962 NotebookApp] 404 GET /static/plotly.js?v=20161201150641 (127.0.0.1) 1.90ms referer=None

And the errors I get from Chrome console:

Failed to load resource: the server responded with a status of 404 (Not Found)
Uncaught Error: Script error for "plotly"(…)

A large group of IT students is looking forward to getting this fixed. :)
Thanks in advance!

Is there a way to add a horizontal line on a categorical box plot?

So, I am using PlotlyJS to build grouped box plots, and I want a horizontal line that runs directly through all boxplots for each grouping. I tried to find a way to accomplish this, perhaps by adding a long tick at the y-intercept. However, I was unable to accomplish this. Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.