Streamlit map occupying the entire background - python

I'm currently building an application with Streamlit and I'd like to plot a map which fills the entire background. Is there a way to do so in Streamlit? I have following code:
import streamlit as st
import folium
from streamlit_folium import folium_static
m = folium.Map(location=[-22.908333, -43.196389], zoom_start=11, tiles='OpenStreetMap')
folium_static(m)
But the generated map does not fill all the browser available space. I'd like to fill the browser available space like in the example below
Example that I found on the internet:

You can set your Streamlit app to use wide mode with st.set_page_config(layout="wide").
It needs to be the first streamlit call you make (i.e. first thing you do after importing streamlit). This will allow you to make use of the whole screen.
import streamlit as st
import folium
from streamlit_folium import folium_static
st.set_page_config(layout="wide")
m = folium.Map(location=[-22.908333, -43.196389], zoom_start=11, tiles='OpenStreetMap')
folium_static(m)
And I don't know about the streamlit_folium, you may need to increase the plot size

Related

How to change the scale of json animation lottie in streamlit?

I'm using streamlit for visualization and wanted to add some animation. I find and install lottie. I liked one gradient that I would like to use as a separator between blocks, that is, it should be a small strip across the entire width of the screen. And with that I had a problem.
Sample code:
import streamlit as st
import requests
import json
from streamlit_lottie import st_lottie
from streamlit_lottie import st_lottie_spinner
def load_lottieurl(url: str):
""" Load animation and images from lottie"""
r = requests.get(url)
if r.status_code != 200:
return None
else:
animation = json.loads(r.text)
return animation
animation_1 = load_lottieurl('https://assets5.lottiefiles.com/packages/lf20_OXZeQi.json')
st_lottie(animation_1, speed=1, loop=True, quality="medium", width=1920)
Actually what's the problem, I can't scale the image without scaling it entirely. Is it possible to do this somehow, or somehow crop the displayed image vertically? Literally height in pixels 10) No matter how I twisted the settings, I can’t orient it correctly
That's what happens now, I just wanted it to be a small strip that would shimmer:

Plotly in Python: show mean and variance of selected data

I am generating histograms using go.Histogram as described here. I am getting what is expected:
What I want to do is to show some statistics of the selected data, as shown in the next image (the white box I added manually in Paint):
I have tried this and within the function selection_fn I placed the add_annotation described here. However, it does nothing. No errors too.
How can I do this?
Edit: I am using this code taken from this link
import plotly.graph_objects as go
import numpy as np
x = np.random.randn(500)
fig = go.Figure(data=[go.Histogram(x=x)])
fig.show()
with obviously another data set.

Python plotly choropleth does not work with geoJSONs

I am trying to use plotly choropleth to draw the map, lets say for a random variable of num for each of the feature regions of the map in Italy. However, it does not work. below is the code that I use:
I have downloaded the GeoJson files for Italy from here.
import random
import pandas as pd
import plotly.express as px
import plotly.io as pio
import json
pio.renderers.default='browser'
with open('it-all.geo.json') as f:
geojson = json.load(f)
n_provinces = len(geojson['features'])
province_names = [geojson['features'][k]['properties']['name'] for k in range(n_provinces)]
randomlist = []
for i in range(0,110):
n = random.randint(1,30)
randomlist.append(n)
datadata = pd.DataFrame({'province':province_names, 'num':randomlist})
fig = px.choropleth(datadata, geojson=geojson, color="num",
locations="province", featureidkey="properties.name",
color_continuous_scale="Viridis")
fig.show()
What I am getting is a mixed shape map as below, can anyone please let me know what I am doing wrong, thanks!!
I tried doing the same thing with data from my country and had the same issues. I think that this data might not be readable by plotly. If you look at the website's demos for their maps, there are several javascript scripts running in order to create the maps. It's possible that they've put their geojson into a custom format so that you have to use their javascript services in order to create a comprehensible map.
I later found a different set of data, and was able to easily create a chorpleth map with plotly using the exact same code that didn't work with the original data. Hopefully you found a different dataset that you could use. Oftentimes governments will provide open data about census areas, province/state borders, etc.

displaying maps from normal text editor instead of notebook

I want to create world maps using folium within a text editor (geany), not using notebooks. this piece of code will work but i cant see the output. i.e, the actual map. How do i get it to display the map.
import pandas as pd
import numpy as np
import folium
m = folium.Map(location=[40.0150, -105.2705])
# Display the map
m
You can use import webbrowser and open the saved html file in your browser.
import folium
import webbrowser
m = folium.Map(location=[40.0150, -105.2705])
m.save("map.html")
# Display the map
webbrowser.open("map.html")
Just like yabberth said save the map as map.html after saving html call the system command like os.system('map.html')

Plotly opens prompt screen after drawing plot

I use the following code to draw a heatmap in plotly:
import plotly.offline as plotly
import plotly.graph_objs as graph_objs
x = []
# fill x with stuff
path = os.path.join(self.get_current_job_directory(), track + '.html')
trace = graph_objs.Heatmap(z = x)
data = [trace]
plotly.plot(data, filename = path)
But I get a prompt screen like this. I need to generate hundreds of such plots on a remote server and its not practical to just dismiss them.
How to get rid of this?
Using the filename argument tells Plotly what filename to use for the HTML file it generates to contain the plot. That file is then viewed in the system's default HTML viewer, which in this case appears to be Lynx. Of course that's rather useless as the point is to view the plot, and Lynx is a text-only Web browser!
To avoid opening the plot, add auto_open=False to your plot() call:
plotly.plot(data, filename=path, auto_open=False)

Categories

Resources