What is Stagraph

Stagraph can be easily described as a visual interface for working with multidimensional data in the following way:

Connect to Your Data » Clean » Wrangle » Combine » Explore » Publish


I've been developing software for over 10 years. Over time, I've found that I have spent most of the time (and my users too) - no matter what task I was dealing with - through inefficient data processing, conversion, cleaning, analysis and statistical processing. Finally, due to the delay, the presentation of the results takes the shortest time in each project. Despite the fact that this is the most important part of the presentation, because the client's satisfaction depends on it. The results can be sophisticated and innovative, but if they are not properly presented, they are lost in reports, tables, maps and graphs. As a person from a non-IT environment (I'm a hydrogeologist), I started to think of the solution that will give me the required features in one interface and will be quickly applicable to real work. I have come to the conclusion that I can choose one of three ways:

  • use a combination of several visual applications with limited capabilities
  • use a visual application with many options that are accessible through hundreds of dialogs
  • use a specialized programming language

The main problem with existing applications is that they lock you in their interface. If the app doesn't support something, you need to use another external application. Additionally, visual interfaces are often created without deeper background logic and are not user-friendly. That is why I finally ended up in programming languages - especially in the R language.

R language is a programming "interface" that allows you to do practically anything with your data. The question is not whether something can be done, but how. And here's the problem. I spent 90 % of the time in R documentation and on Google Search, although in most cases I used the same packages and functions. Simply, if you don't work with this language and related packages on a daily basis, you forget the definition of even basic commands very quickly. So I was looking for some visual interface (GUI - graphical user interface) to help me with this problem.

Today, there are many visual interfaces for this language and its features. But none of them met my requirements. So I decided to create my own. The first experiment was FasterStat.com. FasterStat was an IDE for the R language which was enriched by auxiliary dialogs. However, the architecture was not designed for long-term development. Based on these experiences, I have set up another project iteration. At the same time, the Tidyverse project was released within the R community, which essentially changed the way we work with the R, in areas such as data reading, processing and visualizing. Individual packages from this project fit into each other as pieces of puzzle. I immediately knew that the next interface will be built on this framework. I think the best feature of this project is that the packages are not just a bundle of functions for the selected purpose, but they are based on a deeper logic of "Grammar of Data" and "Grammar of Graphics". Combined with the properties of R language, they make an absolutely perfect tool for data science purposes.

I suppose that the DNA of the Tidyverse's internal logic could also be transferred to the visual interface. This interface was written in the best desktop application platform I know - WPF. Stagraph is therefore bound to the MS Windows platform (I'm not fan of cross-platform GUIs). On the other hand, I was able to get the most out of the Windows platform. If you use a cross-platform solution, you have limited options in some cases and details, both technologically and with GUI specifics. Similarly, nobody can be the best GUI designer for all platforms. Thanks to the WPF platform, I was able to write the Stagraph 1.0 core in the evenings as a side project in two months. Version 2.0 took me another 3 months. For the Stagrap development, I've taken several conditions into account:

  • The resulting app shouldn't contain hundreds of dialogs
  • The same logic in GUI for all steps (data wrangling, data visualizations)
  • The program must be responsive - you only see what you can use at each processing step
  • There must be several ways to do one task - GUI can't fix you in one direction
  • The interface can't limit the options of the R language and related packages in a significant way
  • If possible, Google searching and documentation reading must be minimalized
  • If a user knows some functions in R, he must be allowed to use them as needed in any step
  • All steps must be documented and repeatable as an R script out of Stagraph
  • The user can't be trapped in Stagraph and the results must be usable outside the Stagraph
  • The user has quick and easy access to even more complex package features (for example, the custom plot theme definition in ggplot2)
  • "Visual parallelization" - when processing commands in the background, the user can continue working with the interface without freezing the application

How did I meet my own requirements? You can try it yourself.

Current State

Currently, the second version of the program is released. When you start Stagraph, R runtime is also automatically launched in the background . When you click and set individual items in the app, these actions are automatically transformed to the R code that is sent to the hidden R console. The visual interface is separated from the computational core, and you can continue to work without delay (application freezing) after sending the commands. When the process is completed, the program receives the message and the interface is updated (e.g. the plot is loaded into Stagraph as an image from temporary directory).

Although the Stagraph is a visual interface (work without coding), you can work in a hybrid way. You can directly display the built-in R IDE (integrated development environment) in the program to help you work with the R console. In addition, if you know the selected R language functions, you can also use them in the visual interface within each data processing step. The interface itself doesn't limit the use of R commands.

The current version of Stagraph allows you to read, process, combine, and clean data from different sources. Prepared data can be visually analyzed and you can create relatively complex types of statistical graphics in a few simple steps. Results can be published in several ways. All of these steps can be performed without using R scripts, using the visual interface. However, if you know the basic functions of R language (e.g. cut, seq, rev, c, log, ...), your options are greatly expanded.

I think it's hard to find a similar application that lets you easily edit your data and create complex chart types with a small number of simple steps.


Stagraph will continue to grow in the future. I have a lot of ideas to simplify and expand options. In the near future, I plan to focus on input data. I have an idea how to create an interface that would allow you to read data from different sources using a unified simple dialog that automatically integrates features of other R packages for you. Dialog will only ask you for required arguments such as access data to your twitter account or indicator name and the time period for World Bank Data. Everything would be unified in one dynamic and responsive dialog.

Another important area in which I would like to continue in the future is publishing. It would be useful to directly generate PDF reports, presentations, html pages, online published visualizations or real-time dashboards that would be updated outside the Stagraph interface - directly on the server.

But I'm also open to your ideas and concept, so if you have anything, don't hesitate to contact me.

Stagraph in Action  Start with Free Version