I have continued on the Environmental Data Discovery Tool I posted last month. At the time, it had a single dataset (water chemistry from streams in Ontario) and accessed data from text files. I have extended this functionality in that data is now accessed from a mysql database, and the project includes 2 data datasets (groundwater and surface water monitoring data) with the possibility to include additional datasets easily. The final system should allow the user to discover interesting opendata-datasets using plots and summary tables quickly. The user has three levels of information: a summary of the entire dataset, summary tables on stations and parameters, and finally plots to allow visualizing the data. Since each dataset has its own field, labels, stations, parameters, etc. the menu must be highly dynamic in order to name things and show only items that make sense for the current dataset.
I was aware when I started the app that this functionality may be a bit too complex for Streamlit, as it seems more focused on building more simple dashboards for simple, specific datasets. However, while I encountered some limitations, but I did not hit any severe obstacle. Some operations are still slow. However, both datasets are enormous (hundreds of stations, parameters, and tens of years with sampling events), and in the end, the system will be used with smaller datasets. Additionally, I have not started optimizing for performance yet.
Here is the top three of my wishlist in my little project so far:
A Navbar to be used as a Menu
A grid layout to place plots or controls side by side,
An easy way to create beautiful tables
being able to use the hamburger menu for my own links, documentation of the app to name the most important one
Here is what I appreciated most:
the ability to easily mix plots, text, and tables
the simplicity of Streamlit and the speed with which I progressed
the ease with which an app is deployed
The project is far from being finished, but I am positive now that it can be done in Streamlit.
If anyone has examples of database-driven, dynamic Streamlit apps that he or she is willing to share or discuss, I would be very interested and grateful. I have seen the apps and articles on awesome Streamlit already, and they were tremendously helpful.
Your wishlist is also very much my wishlist and they are all (except maybe the beautifull tables one) feature requests on Github.
To me there is no doubt that Streamlit is the fastest one to develop small apps and prototypes in. The api is so efficient and the app looks good by default. The other frameworks like Bokeh, Panel, Voila and Dash have more advanced features (currently). But it takes time to use them.
For example if you can do more advanced layout and styling you spend time on it. And having a more reactive api with callbacks gives you more power but also requires more concentration and architecture design to develop.
But Streamlit.io we still need the advanced features for the more advanced use cases.
Thanks, Marc,
I agree with you on Streamlit being incredibly fast to develop simple, good looking applications. And at the pace this still relatively new library progresses, I don’t doubt that my wish list will sooner or later be fulfilled. BTW, you are doing a great job promoting Streamlit on Awesome Streamlit; it’s a great resource, where I have found a lot of inspiration and solutions. Many thanks for that!
I was wondering why the beautiful tables are not on your wishlist: Do you already have a workable solution for it that you can recommend, or do you think the current output is sufficient? My main request would not be for more beautiful tables but rather allowing the user to download the data. Do you know if this is a request already?
thanks Marc
this works perfectly for me. I had seen the discussion, but probably was discouraged by the terms workaround and “only for small data”. I have played around and downloaded files with a few thousand rows easily. This is all I need for now.
Thanks for the feedback @godot63 . Nice to know that it can be used for several thousands of rows. I have just not experimented with it. So I don’t know where the limit is.
I called it Workaround because 1) It’s not an official part of Streamlit and I expect there to be some official solution one day 2) I don’t how much data it will suport 3) I think the right solution would be some kind of REST API endpoint instead.
But I can see it’s used in many different web applications based on different technologies. So it’s not that much of a hack/ workaround.
Thanks for stopping by! We use cookies to help us understand how you interact with our website.
By clicking “Accept all”, you consent to our use of cookies. For more information, please see our privacy policy.
Cookie settings
Strictly necessary cookies
These cookies are necessary for the website to function and cannot be switched off. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms.
Performance cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us understand how visitors move around the site and which pages are most frequently visited.
Functional cookies
These cookies are used to record your choices and settings, maintain your preferences over time and recognize you when you return to our website. These cookies help us to personalize our content for you and remember your preferences.
Targeting cookies
These cookies may be deployed to our site by our advertising partners to build a profile of your interest and provide you with content that is relevant to you, including showing you relevant ads on other websites.