{"id":14963478,"url":"https://github.com/facontidavide/plotjuggler","last_synced_at":"2025-12-27T22:52:45.544Z","repository":{"id":37502847,"uuid":"52909975","full_name":"facontidavide/PlotJuggler","owner":"facontidavide","description":"The Time Series Visualization Tool that you deserve.","archived":false,"fork":false,"pushed_at":"2025-03-03T18:51:11.000Z","size":57389,"stargazers_count":4729,"open_issues_count":176,"forks_count":659,"subscribers_count":87,"default_branch":"main","last_synced_at":"2025-04-09T00:14:31.353Z","etag":null,"topics":["chart","csv","labstreaminglayer","lua","mqtt","plot","px4","qt5","ros","rosbag","time-series","ulog","visualize-data"],"latest_commit_sha":null,"homepage":"https://www.plotjuggler.io","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facontidavide.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":"facontidavide","custom":"https://www.paypal.me/facontidavide"}},"created_at":"2016-03-01T21:05:42.000Z","updated_at":"2025-04-08T23:17:32.000Z","dependencies_parsed_at":"2023-12-20T21:36:13.603Z","dependency_job_id":"312a268e-1a19-472b-8813-56f78ff6211d","html_url":"https://github.com/facontidavide/PlotJuggler","commit_stats":{"total_commits":2149,"total_committers":103,"mean_commits":"20.864077669902912","dds":0.254071661237785,"last_synced_commit":"f4f9d4192aee87fefac205fd48285b407f97e0b9"},"previous_names":[],"tags_count":159,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facontidavide%2FPlotJuggler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facontidavide%2FPlotJuggler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facontidavide%2FPlotJuggler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facontidavide%2FPlotJuggler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facontidavide","download_url":"https://codeload.github.com/facontidavide/PlotJuggler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947781,"owners_count":21023067,"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":["chart","csv","labstreaminglayer","lua","mqtt","plot","px4","qt5","ros","rosbag","time-series","ulog","visualize-data"],"created_at":"2024-09-24T13:31:34.560Z","updated_at":"2025-12-27T22:52:45.536Z","avatar_url":"https://github.com/facontidavide.png","language":"C++","readme":"![PlotJuggler](docs/plotjuggler3_banner.svg)\n\n[![windows](https://github.com/facontidavide/PlotJuggler/actions/workflows/windows.yaml/badge.svg)](https://github.com/facontidavide/PlotJuggler/actions/workflows/windows.yaml)\n[![ubuntu](https://github.com/facontidavide/PlotJuggler/actions/workflows/ubuntu.yaml/badge.svg)](https://github.com/facontidavide/PlotJuggler/actions/workflows/ubuntu.yaml)\n[![macos](https://github.com/facontidavide/PlotJuggler/actions/workflows/macos.yaml/badge.svg)](https://github.com/facontidavide/PlotJuggler/actions/workflows/macos.yaml)\n[![ROS1](https://github.com/facontidavide/PlotJuggler/workflows/ros1/badge.svg)](https://github.com/facontidavide/PlotJuggler/actions?query=workflow%3Aros1)\n[![ROS2](https://github.com/facontidavide/PlotJuggler/workflows/ros2/badge.svg)](https://github.com/facontidavide/PlotJuggler/actions?query=workflow%3Aros2)\n[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=I%20use%20PlotJuggler%20and%20it%20is%20amazing%0D%0A\u0026url=https://github.com/facontidavide/PlotJuggler\u0026via=facontidavide\u0026hashtags=dataviz,plotjuggler,GoROS,PX4)\n\n## Gold Sponsor:\n[![Greenzie](docs/sponsor_greenzie.png)](https://www.greenzie.com/)\n[![Intermodalics](docs/sponsor_intermodalics.png)](https://www.intermodalics.ai/)\n[![Greenzie](docs/sponsor_ark.png)](https://arkelectron.com/)\n\n# PlotJuggler 3.15\n\nPlotJuggler is a tool to visualize time series that is **fast**, **powerful** and  **intuitive**.\n\nNoteworthy features:\n\n- Simple Drag \u0026 Drop user interface.\n- Load __data from file__.\n- Connect to live __streaming__ of data.\n- Save the visualization layout and configurations to reuse them later.\n- Fast **OpenGL** visualization.\n- Can handle **thousands** of timeseries and **millions** of data points.\n- Transform your data using a simple editor: derivative, moving average, integral, etc…\n- PlotJuggler can be easily extended using __plugins__.\n\n![PlotJuggler](docs/plotjuggler3.gif)\n\n\n## Data sources (file and streaming)\n\n- Load CSV files.\n- Load [ULog](https://docs.px4.io/main/en/dev_log/ulog_file_format) (PX4).\n- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.\n- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.\n- Well integrated with [ROS](https://www.ros.org/): open *rosbags* and/or subscribe to ROS *topics* (both ROS1 and ROS2).\n- Supports the [Lab Streaming Layer](https://labstreaminglayer.readthedocs.io/info/intro.html), that is used by [many devices](https://labstreaminglayer.readthedocs.io/info/supported_devices.html).\n- Easily add your custom data source and/or formats...\n\n![](docs/data_sources.svg)\n\n## Transform and analyze your data\nPlotJuggler makes it easy to visualize data but also to analyze it.\nYou can manipulate your time series using a simple and extendable Transform Editor.\n\n![](docs/function_editor.png)\n\nAlternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions\nusing a scripting language based on [Lua](https://www.tutorialspoint.com/lua/index.htm).\n\nIf you are not familiar with Lua, don't be afraid, you won't need more than 5 minutes to learn it ;)\n\n![](docs/custom_editor.png)\n\n## Tutorials\n\nTo learn how to use PlotJuggler, check the tutorials here:\n\n| Tutorial 1   |  Tutorial 2 | Tutorial 3 |\n:-------------------------:|:-------------------------:|:-------------------------:\n| [![](docs/tutorial_1.png)](https://slides.com/davidefaconti/introduction-to-plotjuggler) | [![](docs/tutorial_2.png)](https://slides.com/davidefaconti/plotjuggler-data) | [![](docs/tutorial_3.png)](https://slides.com/davidefaconti/plotjuggler-transforms) |\n\n## Supported plugins\n\nSome plugins can be found in a different repository. The individual README files\n*should* include all the information needed to compile and use the plugin.\n\nPlease submit specific issues, Pull Requests and questions on the related Github repository:\n\n- [MQTT DataStreamer](https://github.com/PlotJuggler/plotjuggler-mqtt).\n- [Lab Streaming Layer DataStreamer](https://github.com/PlotJuggler/plotjuggler-lsl).\n- [ROS plugins](https://github.com/PlotJuggler/plotjuggler-ros-plugins).\n- [CAN .dbg DataLoader](https://github.com/PlotJuggler/plotjuggler-CAN-dbs).\n\nIf you want a simple example to learn how to write your own plugins, have a look at\n[PlotJuggler/plotjuggler-sample-plugins](https://github.com/PlotJuggler/plotjuggler-sample-plugins)\n\n# Installation\n\nYou can download the latest ready to use binaries from the [Release page](https://github.com/facontidavide/PlotJuggler/releases).\n\n\u003cdiv align=\"center\"\u003e\n\n| 🐧 Linux | 🍎 macOS | 🪟 Windows | 📦 Debian |\n|:--------:|:--------:|:----------:|:---------:|\n| **AppImage** | **Installer** | **Installer** | **Packages** |\n| x86 / arm64 | x86 / arm64 | x64 | bookworm, trixie |\n\n\u003c/div\u003e\n\n## Snap (recommended in Ubuntu, to ROS users too)\n\nThe snap contains a version of PlotJuggler that works (with some limitations) with ROS2.\n\n![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)\n\nTo install it in Ubuntu, run:\n\n```\nsudo snap install plotjuggler\n```\n\n### Debian packages for ROS User\n\nInstall the ROS packages with:\n\n```\nsudo apt install ros-$ROS_DISTRO-plotjuggler-ros\n```\nTo launch PlotJuggler, use the command:\n\n```\nros2 run plotjuggler plotjuggler\n```\n\nROS plugins are available in a separate repository: https://github.com/PlotJuggler/plotjuggler-ros-plugins\n\nPlease take a look at the instructions in that repository if you want to compile PJ and its ROS plugins from source.\n\n\n## Compile from source\n\nYou can find the detailed instructions here: [COMPILE.md](COMPILE.md).\n\n# Sponsorship and commercial support\n\nPlotJuggler required a lot of work to develop and maintain; my goal is to build the most\nintuitive and powerful tool to visualize data and timeseries.\n\nIf you find PlotJuggler useful, consider donating [PayPal](https://www.paypal.me/facontidavide) or becoming a\n[Github Sponsor](https://github.com/sponsors/facontidavide).\n\nIf you need to extend any of the functionalities of PlotJuggler to cover a specific\nneed or to parse your custom data formats, you can receive commercial\nsupport from the main author, [Davide Faconti](mailto:davide.faconti@gmail.com).\n\n# License\n\nPlotJuggler is released under the [Mozilla Public License Version 2.0](LICENSE.md),\nwhich allows users to develop closed-source plugins.\n\nPlease note that some third-party dependencies (including Qt) use the\n**GNU Lesser General Public License**.\n\n# Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=facontidavide/PlotJuggler\u0026type=Date)](https://star-history.com/#facontidavide/PlotJuggler\u0026Date)\n\n# Contributors\n\n\u003ca href=\"https://github.com/facontidavide/plotjuggler/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=facontidavide/plotjuggler\" /\u003e\n\u003c/a\u003e\n","funding_links":["https://github.com/sponsors/facontidavide","https://www.paypal.me/facontidavide"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacontidavide%2Fplotjuggler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacontidavide%2Fplotjuggler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacontidavide%2Fplotjuggler/lists"}