Logo

dev-resources.site

for different kinds of informations.

Bokeh an interesting data tool in python for data visualization

Published at
9/8/2024
Categories
python
bokuh
heroku
datascience
Author
juan_brendonlunajuarez_
Categories
4 categories in total
python
open
bokuh
open
heroku
open
datascience
open
Author
23 person written this
juan_brendonlunajuarez_
open
Bokeh an interesting data tool in python for data visualization

Data visualization plays a critical role in interpreting large volumes of information. Tools like Bokeh have emerged as popular solutions for building interactive dashboards and reports. Each tool brings unique advantages depending on the complexity of your project and your preferred programming language. In this article, we will delve into each tool and then focus on Bokeh, including a hands-on example and deployment in the cloud.

So that...

What is bokeh?
Bokeh is an interactive visualization library that targets modern web browsers for presentation. It offers elegant and concise graphics, enabling developers to build dashboards with advanced interactivity. Bokeh is particularly suitable for data scientists and developers using Python, offering both high-level interfaces and granular control over your plots.

How can you use this tool?

  • Install dependencies:

pip install bokeh
pip install gunicorn

  • Create the plot: In this case i developed two plots in the main page then i called "app.py"

Image description

from bokeh.layouts import column
from bokeh.models import ColumnDataSource, Select
from bokeh.plotting import figure, curdoc
import numpy as np

# Sample data for line plot
line_data = {
    'x': [1, 2, 3, 4, 5],
    'y1': [6, 7, 2, 4, 7],
    'y2': [1, 4, 8, 6, 9]
}

# Data for scatter plot
N = 4000
x_scatter = np.random.random(size=N) * 100
y_scatter = np.random.random(size=N) * 100
radii = np.random.random(size=N) * 1.5
colors = np.array([(r, g, 150) for r, g in zip(50 + 2 * x_scatter, 30 + 2 * y_scatter)], dtype="uint8")

# Create ColumnDataSource for line plot
source = ColumnDataSource(data={'x': line_data['x'], 'y': line_data['y1']})

# Create a figure for line plot
plot_line = figure(title="Interactive Line Plot", x_axis_label='X', y_axis_label='Y')
line1 = plot_line.line('x', 'y', source=source, line_width=3, color='blue', legend_label='y1')
line2 = plot_line.line('x', 'y2', source=source, line_width=3, color='red', legend_label='y2', line_alpha=0.5)

# Create a figure for scatter plot
plot_scatter = figure(title="Scatter Plot", tools="hover,crosshair,pan,wheel_zoom,zoom_in,zoom_out,box_zoom,undo,redo,reset,tap,save,box_select,poly_select,lasso_select,examine,help")
plot_scatter.circle(x_scatter, y_scatter, radius=radii,
                    fill_color=colors, fill_alpha=0.6,
                    line_color=None)

# Dropdown widget to select data for line plot
select = Select(title="Y-axis data", value='y1', options=['y1', 'y2'])

# Update function to change data based on selection
def update(attr, old, new):
    selected_y = select.value
    source.data = {'x': line_data['x'], 'y': line_data[selected_y]}
    # Update line colors based on selection
    line1.visible = (selected_y == 'y1')
    line2.visible = (selected_y == 'y2')
    plot_line.title.text = f"Interactive Line Plot - Showing {selected_y}"

select.on_change('value', update)

# Arrange plots and widgets in a layout
layout = column(select, plot_line, plot_scatter)

# Add layout to current document
curdoc().add_root(layout)
`
Enter fullscreen mode Exit fullscreen mode

Create your page in heroku and make the next to steps.

  • Create a Procfile:

Image description

In this file declare for example in my case.

web: bokeh serve --port=$PORT --address=0.0.0.0 --allow-websocket-origin=juancitoelpapi-325d94c2c6c7.herokuapp.com app.py

  • Create requeriments: In the project create requirements.txt and write and save

Image description

bokeh

  • Push your project:

It's similar when you push a project in git but in this case the final master push is in heroku

git init
git add .
git commit -m "Deploy Bokeh app with Gunicorn"
git push heroku master

  • And Finally ...

You can see your page with the plots bokeh.

Image description

Image description

  • Conclusion

The real power of Bokeh lies in its ability to deliver interactive dashboards in web environments, making it ideal for real-time data monitoring and large datasets. By using Gunicorn to deploy Bokeh applications on cloud services like Heroku, you can build scalable, production-ready dashboards that are easy to maintain and update.

heroku Article's
30 articles in total
Favicon
When (Tech Service) Relationships Don’t Work Out
Favicon
Ferrum Doesn’t Work on Heroku?
Favicon
Handbook to migrate your Postgres from Heroku to Kamal
Favicon
Deploy your Preprod and Production Rails Application using Kamal
Favicon
How To Deploy Django On Heroku Using Automatic Deployment from GitHub
Favicon
Sherlock Holmes: The Case Of App Not Found
Favicon
Own Heroku Review Apps with GitHub Actions and Kamal 2
Favicon
Copy Config Vars from One Heroku App to Another
Favicon
Why Haven’t You Upgraded to HTTP/2?
Favicon
Leveling Up My GraphQL Skills: Real Time Subscriptions
Favicon
Self-hosted alternative to Heroku - Ptah.sh
Favicon
Bokeh an interesting data tool in python for data visualization
Favicon
How to implement Coolify, the self-hosted alternative to Heroku
Favicon
redis ACTION REQUIRED: Version approaching end of life
Favicon
Import the database from the Heroku dump
Favicon
Create and Connect to an Azure SQL Database on Heroku: A Step-By-Step Guide
Favicon
Buh-Bye Webpack and Node.js, Hello Rails and Import Maps
Favicon
How to Set Up Strapi and Deploy on Heroku
Favicon
Career Change: Corporate Ladder to Software Developer 🌟
Favicon
🌟 Corporate Ladder to Software Developer 🌟
Favicon
Exploring Key Features of Heroku and AWS: A Comparative Analysis
Favicon
how to deploy backend
Favicon
Installing Playwright on Heroku for Programmatic Node.js Browser Automation
Favicon
5 Simple Steps to Get Your Test Suite Running in Heroku CI
Favicon
When You Need More Power Than a Lambda Provides
Favicon
Deploying NestJS Apps to Heroku: A Comprehensive Guide
Favicon
Heroku for ChatOps: Start and Monitor Deployments from Slack
Favicon
How to Setup a Project That Can Host Up to 1000 Users for Free
Favicon
How to Heroku: Launch Your First App Webinar
Favicon
Working with Heroku Logplex for Comprehensive Application Logging

Featured ones: