1
$\begingroup$

My next task is to create an interface or rather a visualization of signals. Firstly, this is simply the plotting of a few signals, nothing special about that. But one shall be able to zoom in and zoom out as one likes to. Further, some statistics shall be calculated while this is also nothing special, so far.

The data consists of dozens or maybe hundreds of .csv files which have to be merged. According to the file name the data itself will be merged or separated (device names are given in the filenames). Each file consists of 5000 data points. So in total, something around 10-20 devices, each with up to around 500 files á 5000 data points.

I wonder about how to get started. I'm familiar with R and python. I'm more fluent in R but I'm unsure about what makes more sense due to the interaction part (zooming) and the amount of data. The tool shall finally be a standalone version, so be usable without me. Possible realization choices I am aware of are:

  • R Shiny app
  • R notebook
  • Python notebook / jupyter
  • Python GUI (PyQt)
  • Something with plotly?
  • Something else?

As a limitation: Though a browser can be used it must not be hosted in the internet aka be available for public.

Could you give me any input?

$\endgroup$

2 Answers 2

1
$\begingroup$

If you want to choose Python, I can recommend Plotly. It is a great tool for interactive visualizations. You can start by creating stand-alone figures and when you are satisfied/done with all the visualizations, you can quite easily wrap them into a Plotly Dash App that runs locally and allows for interaction, callbacks (i.e., user-selected inputs, variables, etc.) and more.

There is extensive documentation on both the plotly graphing library (here: https://plotly.com/python/) and plotly dash (here: https://dash.plotly.com/), which should make it easy to get started.

$\endgroup$
5
  • $\begingroup$ Thank you, this sounds like the way to go. How exactly would the "pipeline" be? Via python I create plotly plots and via dash I can make them interactive and stuff. How would the "standalone" part be? $\endgroup$
    – Ben
    Commented Feb 23, 2023 at 14:53
  • 1
    $\begingroup$ Plotly plots are interactive by default, when calling fig.show() inside a .py file, they will automatically appear in a new browser tab and you can zoom, slice the graph, use a tooltip, etc.. Alternatively you can use fig.write_html("path/file_name.html") to store interactive figures. In a plotly dash app, several figures can be shown in a dashboard which, for instance, allows filtering of the entire dashboard by clicking on a data point in one figure. $\endgroup$
    – justinlk
    Commented Feb 23, 2023 at 15:25
  • $\begingroup$ Thanks again! With a .py file I would "spread" the corresponding code, right? Is there a way to hide the code for the later users? Maybe via using an .exe file? Or is there a way e.g. to use dash offline? An .html file is also fine (Would one be able to use new data with a .html file?). $\endgroup$
    – Ben
    Commented Feb 23, 2023 at 15:30
  • 1
    $\begingroup$ I am afraid I cannot help with this since I have not published a dash app to users that do not want to use Python themselves to start running it myself. But I would guess that an .html file allows for interactivity, but not for updates, new data, etc. $\endgroup$
    – justinlk
    Commented Feb 23, 2023 at 15:39
  • 1
    $\begingroup$ Ok, thanks. I guess I will try to set up an .exe file which creates a new .html file everytime it is needed. $\endgroup$
    – Ben
    Commented Feb 23, 2023 at 16:06
1
$\begingroup$

I recommend to use matplotlib and mayavi for visualization. These two packages are fully-functional, user-friendly, interactive visualization alternatives.

You should use pandas framework for processing *.csv files as it is fast, powerful, flexible and easy to use open source data analysis and manipulation tool.

matplotlib, mayavi and pandas have a lot of documentations, tutorials, best practices and community online.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.