Sparkling gems and new releases from the world of Free and Open Source Software
FOSSPicks
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
https://github.com/facontidavide/PlotJuggler
Note taking
Buy this article as PDF
(incl. VAT)