Sparkling gems and new releases from the world of Free and Open Source Software


Article from Issue 244/2021

Graham looks at the PlotJuggler 3 data visualizer, note taking with Xournal++, the KStars planetarium, and more!

Data visualizer

PlotJuggler 3

PlotJuggler is an application that can help you visualize timestamped data. The timestamp part is important, because it's a reference to the kind of data that PlotJuggler is best capable of parsing and visualizing. Typically, this means data from sensors, such as an orientation value, voltage, light sensor resistance, flow meters, and velocity. Sensors can even be remote, and PlotJuggler will connect via protocols such as MQTT, WebSockets, ZeroMQ, and UDP. But it can also work from data saved to a file, from simple CSV to JSON, CBOR, and BSON. With this kind of focus, it's no surprise that the project established itself first as a tool for the robot operating system (ROS), where accurate monitoring and insightful analysis of this kind of data has a direct impact on the performance and development of the hardware. Despite this, as well as its intimidating looks and capabilities, PlotJuggler isn't difficult to use. It can even help with more mundane datasets, such as the location data from a bike ride, your running cadence from a smart watch, or even just your kitchen thermometer. This is thanks to its plotting window.

It's only after you've got your data into the application that PlotJuggler's real strengths become apparent. Datasets are loaded into a panel on the left (by default) called Timeseries List, and this can bundle multiple sources at once. You might want GPS data from one sensor, for example, and heart rate from another. To plot those values, you simply drag them from the Timeseries List into the default 2D plot view that takes up most of the window space. You can drag as many as you need, and each additional datapoint will be superimposed on top of previous values, with the axis and annotations automatically updated for scale. It's quick and easy to understand. Because all this data has a timestamp, you can play back the input values as they were received with the play button at the bottom of the plot. A cursor will then swoop across the plot to show which values were detected at which times, a little like it does in Audacity when playing an audio file (which is really just a different kind of plot).

The plot window is the most powerful element in the application. If you right-click within the view, for example, you can split the window both vertically and horizontally into as many separate plot panes as you need. You can then drag data elements into these panes to have their values plotted separately within the same time frame. This is useful if they use a completely different scale or set of axes, for instance, and you can even choose to lock or unlock the zoom value for each individual pane. There's also a plot editor that allows you to transform multiple inputs into a single output by writing a Lua-based function. This would be brilliant for calculating values such as velocity or distances from other values captured by sensors and then plotting the new derived values alongside those measured. Sliding across the datapoints, zooming in and out, and playing back through even complex datasets is always super-smooth thanks to the OpenGL acceleration. When you find a layout that works well for the dataset you're studying, you can save the entire layout, including the data, as an XML file to use for further analysis or to reload into the application to continue work.

Project Website

[UCC:x50-b-bold]1. Data formats:[/UCC] PlotJuggler can import numbers in many different formats and packages. [UCC:x50-b-bold]2. Streaming data:[/UCC] Grab real-time data from your robots and devices with MQTT and other protocols. [UCC:x50-b-bold]3. Timeseries List:[/UCC] Each set of data you import is listed here, and you simply drag a source into the plot to generate the chart. [UCC:x50-b-bold]4. Plot area:[/UCC] The data is rendered beautifully with OpenGL, allowing for seamless automatic scaling and zooming. [UCC:x50-b-bold]5. Tabs and splits:[/UCC] Split a single view into multiple panes, or create a new tab and drag in as many data sources as you need. [UCC:x50-b-bold]6. [/UCC] Linked views: With panes locked together, the same data point is always in view.[UCC:x50-b-bold]. 7. Data processing:[/UCC] Calculate derivatives, integrals, and moving averages to generate new datapoints. [UCC:x50-b-bold]8. Playback:[/UCC] Every datapoint is linked to a timestamp, allowing you to play back the data as it was captured.

Note taking

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • R For Science

    The R programming language is a universal tool for data analysis and machine learning.

  • Tutorial – Matplotlib

    Matplotlib offers so many options that you may have trouble deciding on which ones to use for your plots.

  • Perl: Plotting GPS Data

    Perl hackers take to the hills with a navigation system that provides a graphical rendering of a hiking tour.

  • Orca

    Monitor and troubleshoot Linux system performance with the free and powerful Orca.

  • Gnuplot

    Use Gnuplot with command-line utilities.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More