You dropped a file into PlotJuggler, or picked it from the open dialog, and instead of curves you got a refusal — the experience users describe, and search for, as a “no such plugin” problem. The wording matters less than what it reveals: in PlotJuggler, opening a file is a plugin’s job. If no installed plugin claims your file’s format, there is nothing to open it with. This guide explains that architecture, the specific case of ROS bags, and how to fix the gap on both PlotJuggler lines. It is part of the Troubleshooting hub; if the program itself will not start, work through the Install guides first.
Why PlotJuggler answers this way: loaders are plugins
PlotJuggler’s core is deliberately small. The documented plugin architecture splits capability into DataLoaders (read files), DataStreamers (receive live data), Message Parsers (understand encodings) and Toolboxes, all extendable in C++, with a sample-plugins repository for authors. CSV and PX4 ULog loading ship with the classic application; other formats arrive through plugin packages. So a “no plugin for this file” outcome is not PlotJuggler failing to recognise a file it should know — it is PlotJuggler truthfully reporting that the loader for that format is not present in this installation. That is also why two machines can behave differently on the same file: they do not have the same plugins installed.
This is not a theoretical edge case. On the project’s GitHub tracker, users have filed exactly this class of failure — for example two reports titled “The plugin [DataLoad ROS bags] thrown the following exception: map::at” (issues #901 and #991), where the ROS bags plugin itself threw an exception instead of loading the data. An older report, “AppImage fails to load ROS related plugins and/or ROS bags” (issue #166), makes the same point from the packaging side: the application was present, the ROS plugin layer was not reachable.
The most common case: ROS bags without the ROS plugins
ROS support is the textbook example, because PlotJuggler is not itself a ROS application. The project’s own description is explicit: ROS is supported through external plugins in the separate plotjuggler-ros-plugins repository — a DataLoader for rosbags (ROS 1 and ROS 2), a ROS topic subscriber, and related tools. A standalone PlotJuggler install without that plugin set has no way to open a .bag file or a rosbag2 recording, however healthy the file is. The fix is to install the plugins the documented way:
sudo apt install ros-$ROS_DISTRO-plotjuggler-ros
ros2 run plotjuggler plotjugglerThat package is version 2.3.1 on the ROS Index, listed for the distributions humble, jazzy, kilted, lyrical and rolling, and from the v2.3 series the plugins line supports ROS 2 only. The full walkthrough — including why launching through ros2 run matters — is our ROS 2 install guide, and the loading-specific version of this problem has its own guide: ROS 2 plugin not loading.
Check the packaging limitation before reinstalling
- Snap installs have documented limits. The PJ3 documentation recommends the snap (
sudo snap install plotjuggler) on Ubuntu, including for ROS users, while noting it works with ROS 2 with some limitations. A confined snap is exactly the kind of install where an external plugin or a custom message type may not be reachable. If your workflow depends on ROS plugins, the apt ROS package route is the safer default. - An AppImage is one file, not an ecosystem. The AppImage carries the application; it does not magically carry your system’s ROS plugin libraries. Issue #166 above is the historical record of that mismatch.
- Check the file extension honestly. A loader claims formats it understands. A file renamed to a familiar extension, or a rosbag2 recording folder treated as if it were a single file, can present as a missing-plugin problem when the real issue is what you handed it.
The PJ4 answer: the Extensions Marketplace
PlotJuggler 4 (4.0.0) keeps the plugin model and gives it a distribution channel: the Extensions Marketplace (File → Marketplace), backed by the project’s public plugin registry, where loaders, streamers, parsers and toolboxes can be installed and updated from inside the application. PJ4 also widens what is built in — its native file list includes CSV, MCAP, Parquet, PX4 ULog, LeRobot, MP4, PCD and PLY — so some files that needed a plugin route under PJ3 open directly in PJ4; MCAP is the clearest example, covered in MCAP file won’t open. Our Marketplace guide explains how installing extensions works. Note the honest limit: the ROS package ecosystem is still built on the PJ3 line, so “switch to PJ4” is not the fix for a ROS-bag loader gap — installing the ROS plugins is.
A short diagnostic order
- Confirm a built-in format works: load a small CSV. If that fails too, you have a broader install problem — go to the install troubleshooting guide.
- Name the format you actually need (ROS 1 bag, rosbag2/MCAP, a CAN log, a custom format) and identify which plugin provides it.
- Check how this copy of PlotJuggler was installed (standalone, snap, AppImage, ROS apt package) and whether that channel can carry the plugin.
- Install the missing piece by its documented route, restart PlotJuggler, and retest with the same file.
- Still stuck? Compare notes with the sibling guides on this hub — MCAP won’t open and ROS 2 plugin not loading cover the two most specific versions of this problem.
Files for both lines, with checksums, are on the Download page. The symptom index for everything else is the Troubleshooting hub.
