{"id":20279760,"url":"https://github.com/genieframework/stippleplotly.jl","last_synced_at":"2025-09-08T09:35:25.547Z","repository":{"id":36963827,"uuid":"332057528","full_name":"GenieFramework/StipplePlotly.jl","owner":"GenieFramework","description":"Plotly integration for Stipple.jl","archived":false,"fork":false,"pushed_at":"2024-05-29T05:56:23.000Z","size":4179,"stargazers_count":23,"open_issues_count":14,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-05-29T14:08:56.173Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GenieFramework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-22T20:39:52.000Z","updated_at":"2024-05-29T05:39:56.000Z","dependencies_parsed_at":"2023-10-21T19:20:12.522Z","dependency_job_id":"08e1186b-f0d7-44e6-9101-e95d99616868","html_url":"https://github.com/GenieFramework/StipplePlotly.jl","commit_stats":{"total_commits":140,"total_committers":14,"mean_commits":10.0,"dds":0.6857142857142857,"last_synced_commit":"ad1651fb6fc7e50990581e8634b155254fb2cb74"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStipplePlotly.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStipplePlotly.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStipplePlotly.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenieFramework%2FStipplePlotly.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GenieFramework","download_url":"https://codeload.github.com/GenieFramework/StipplePlotly.jl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241773256,"owners_count":20018064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T13:33:02.278Z","updated_at":"2025-03-04T02:41:40.943Z","avatar_url":"https://github.com/GenieFramework.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StipplePlotly\n\nEmbedding Plotly Charts in Stipple.\n\n### News: The standard API is now PlotlyBase, the StipplePlotly API is considered legacy.\n### Example with forwarding of plotly events\n\nSee the docstrings of `watchplots()` and `watchplot()` for more details!\n\n```julia\nusing Stipple, Stipple.ReactiveTools\nusing StipplePlotly\nusing PlotlyBase\n\n@app Example begin\n    @mixin plot::PBPlotWithEvents\n    @in plot_cursor = Dict{String, Any}()\n\n    @onchange isready begin\n        isready || return\n        p = Plot(scatter(y=1:10))\n        plot.layout = p.layout\n        plot.data = p.data\n    end\n\n    @onchange plot_selected begin\n        haskey(plot_selected, \"points\") \u0026\u0026 @info \"Selection: $(getindex.(plot_selected[\"points\"], \"pointIndex\"))\"\n    end\n\n    @onchange plot_click begin\n        @info \"$plot_click\"\n    end\n\n    @onchange plot_hover begin\n        @info \"hovered over $(plot_hover[\"points\"][1][\"x\"]):$(plot_hover[\"points\"][1][\"y\"])\"\n        # @info \"$plot_hover\"\n    end\n\n    @onchange plot_cursor begin\n        @info \"cursor moved to $(plot_cursor[\"cursor\"][\"x\"]):$(plot_cursor[\"cursor\"][\"y\"])\"\n        # @info \"$plot_cursor\"\n    end\nend\n\n# commented lines below: manual definition of plot_events\n# @app Example begin\n#     @in plot = Plot()\n#     @in plot_selected = Dict{String, Any}()\n#     @in plot_click = Dict{String, Any}()\n#     @in plot_hover = Dict{String, Any}()\n#     @in plot_cursor = Dict{String, Any}()\n# end\n\n@mounted Example watchplots()\n\n# the keyword argument 'keepselection' (default = false) controls whether the selection outline shall be removed after selection\nfunction ui()\n    cell(class = \"st-module\", [\n        plotly(:plot, syncevents = true, keepselection = false),\n    ])\nend\n\n@page(\"/\", ui, model = Example)\n```\n\nPossible forwarded events are\n\n- '_selected' (Selection changed)\n- '_hover' (hovered over data point)\n- '_click' (click event on plot area)\n- '_relayout' (plot layout changed)\n- '_cursor' (current mouse position, not covered in PBPlotWithEvents in order to reduce data traffic)\n\nFor more Stipple Plotly Demos please check: [Stipple Demos Repo](https://github.com/GenieFramework/StippleDemos)\n\n## Acknowledgement\n\nHandling of Plotly Events was highly inspired by the [PlotlyJS](https://github.com/JuliaPlots/PlotlyJS.jl) package by [Spencer Lyon](https://github.com/sglyon)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenieframework%2Fstippleplotly.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenieframework%2Fstippleplotly.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenieframework%2Fstippleplotly.jl/lists"}