How to make 3D Bubble Charts in Python with Plotly. Three examples of 3D Bubble Charts.
Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Sign up for early access now.
3d Bubble chart with Plotly Express¶In [1]:
import plotly.express as px import numpy as np df = px.data.gapminder() fig = px.scatter_3d(df, x='year', y='continent', z='pop', size='gdpPercap', color='lifeExp', hover_data=['country']) fig.update_layout(scene_zaxis_type="log") fig.show()
In [2]:
import plotly.graph_objects as go import pandas as pd # Get Data: this ex will only use part of it (i.e. rows 750-1500) df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv') start, end = 750, 1500 fig = go.Figure(data=go.Scatter3d( x=df['year'][start:end], y=df['continent'][start:end], z=df['pop'][start:end], text=df['country'][start:end], mode='markers', marker=dict( sizemode='diameter', sizeref=750, size=df['gdpPercap'][start:end], color = df['lifeExp'][start:end], colorscale = 'Viridis', colorbar_title = 'Life<br>Expectancy', line_color='rgb(140, 140, 170)' ) )) fig.update_layout(height=800, width=800, title=dict(text='Examining Population and Life Expectancy Over Time')) fig.show()Bubble Chart Sized by a Variable¶
Plot planets' distance from sun, density, and gravity with bubble size based on planet size
In [3]:
import plotly.graph_objects as go planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto'] planet_colors = ['rgb(135, 135, 125)', 'rgb(210, 50, 0)', 'rgb(50, 90, 255)', 'rgb(178, 0, 0)', 'rgb(235, 235, 210)', 'rgb(235, 205, 130)', 'rgb(55, 255, 217)', 'rgb(38, 0, 171)', 'rgb(255, 255, 255)'] distance_from_sun = [57.9, 108.2, 149.6, 227.9, 778.6, 1433.5, 2872.5, 4495.1, 5906.4] density = [5427, 5243, 5514, 3933, 1326, 687, 1271, 1638, 2095] gravity = [3.7, 8.9, 9.8, 3.7, 23.1, 9.0, 8.7, 11.0, 0.7] planet_diameter = [4879, 12104, 12756, 6792, 142984, 120536, 51118, 49528, 2370] # Create trace, sizing bubbles by planet diameter fig = go.Figure(data=go.Scatter3d( x = distance_from_sun, y = density, z = gravity, text = planets, mode = 'markers', marker = dict( sizemode = 'diameter', sizeref = 750, # info on sizeref: https://plotly.com/python/reference/scatter/#scatter-marker-sizeref size = planet_diameter, color = planet_colors, ) )) fig.update_layout( width=800, height=800, title=dict(text="Planets!"), scene=dict( xaxis=dict( title=dict( text="Distance from Sun", font=dict( color="white" ) ) ), yaxis=dict( title=dict( text="Density", font=dict( color="white" ) ) ), zaxis=dict( title=dict( text="Gravity", font=dict( color="white" ) ) ), bgcolor="rgb(20, 24, 54)" ) ) fig.show()Edit the Colorbar¶
Plot planets' distance from sun, density, and gravity with bubble size based on planet size
In [4]:
import plotly.graph_objects as go planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto'] temperatures = [167, 464, 15, -20, -65, -110, -140, -195, -200, -225] distance_from_sun = [57.9, 108.2, 149.6, 227.9, 778.6, 1433.5, 2872.5, 4495.1, 5906.4] density = [5427, 5243, 5514, 3933, 1326, 687, 1271, 1638, 2095] gravity = [3.7, 8.9, 9.8, 3.7, 23.1, 9.0, 8.7, 11.0, 0.7] planet_diameter = [4879, 12104, 12756, 6792, 142984, 120536, 51118, 49528, 2370] # Create trace, sizing bubbles by planet diameter fig = go.Figure(go.Scatter3d( x = distance_from_sun, y = density, z = gravity, text = planets, mode = 'markers', marker = dict( sizemode = 'diameter', sizeref = 750, # info on sizeref: https://plotly.com/python/reference/scatter/#scatter-marker-sizeref size = planet_diameter, color = temperatures, colorbar_title = 'Mean<br>Temperature', colorscale=[[0, 'rgb(5, 10, 172)'], [.3, 'rgb(255, 255, 255)'], [1, 'rgb(178, 10, 28)']] ) )) fig.update_layout( width=800, height=800, title=dict(text="Planets!"), scene=dict( xaxis=dict( title=dict( text="Distance from Sun", font=dict( color="white" ) ) ), yaxis=dict( title=dict( text="Density", font=dict( color="white" ) ) ), zaxis=dict( title=dict( text="Gravity", font=dict( color="white" ) ) ), bgcolor="rgb(20, 24, 54)" ) ) fig.show()What About Dash?¶
Dash is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.
Learn about how to install Dash at https://dash.plot.ly/installation.
Everywhere in this page that you see fig.show()
, you can display the same figure in a Dash application by passing it to the figure
argument of the Graph
component from the built-in dash_core_components
package like this:
import plotly.graph_objects as go # or plotly.express as px fig = go.Figure() # or any Plotly Express function e.g. px.bar(...) # fig.add_trace( ... ) # fig.update_layout( ... ) from dash import Dash, dcc, html app = Dash() app.layout = html.Div([ dcc.Graph(figure=fig) ]) app.run(debug=True, use_reloader=False) # Turn off reloader if inside Jupyter
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4