Widgets & Rich Display
Widgets & Rich Display
Section titled “Widgets & Rich Display”Rich Output
Section titled “Rich Output”Jupyter can display much more than plain text:
from IPython.display import display, HTML, Image, Markdown, JSON, Audio, Video
# HTMLdisplay(HTML("<h2 style='color:steelblue'>Hello</h2>"))
# Markdowndisplay(Markdown("## Heading\n- item 1\n- item 2"))
# Image from URL or filedisplay(Image(url="https://example.com/image.png", width=400))display(Image(filename="chart.png"))
# JSON (collapsible tree)display(JSON({"name": "Alice", "scores": [90, 85, 92]}))
# LaTeX mathfrom IPython.display import Math, Latexdisplay(Math(r'\frac{d}{dx}\left(x^n\right) = nx^{n-1}'))DataFrames
Section titled “DataFrames”Pandas DataFrames render as styled HTML tables automatically:
import pandas as pd
df = pd.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Score': [90, 85, 92], 'Grade': ['A', 'B', 'A']})
df # renders as table in last line of cell
# Styled DataFramedf.style \ .highlight_max(subset=['Score'], color='lightgreen') \ .highlight_min(subset=['Score'], color='lightyellow') \ .format({'Score': '{:.1f}'})ipywidgets
Section titled “ipywidgets”Interactive UI controls that connect to Python:
pip install ipywidgetsimport ipywidgets as widgetsfrom IPython.display import display
# Sliderslider = widgets.IntSlider(value=5, min=0, max=20, description='Value:')display(slider)print(slider.value) # read current value
# Interactive functionfrom ipywidgets import interact, interactive
@interact(x=(0, 10), y=(0, 10))def add(x=5, y=5): print(f"{x} + {y} = {x + y}")
# Dropdowndropdown = widgets.Dropdown( options=['Option A', 'Option B', 'Option C'], value='Option A', description='Choose:')display(dropdown)
# Text inputtext = widgets.Text(value='', placeholder='Type here', description='Name:')display(text)
# Button with callbackbutton = widgets.Button(description='Click me', button_style='success')output = widgets.Output()
def on_click(b): with output: print("Button clicked!")
button.on_click(on_click)display(button, output)Layout & Containers
Section titled “Layout & Containers”import ipywidgets as widgets
# HBox / VBoxhbox = widgets.HBox([ widgets.Button(description='Left'), widgets.Button(description='Right')])
vbox = widgets.VBox([ widgets.Label('Settings'), widgets.IntSlider(description='Alpha:'), widgets.FloatSlider(description='Beta:')])
display(hbox, vbox)
# Tab widgettab = widgets.Tab()tab.children = [ widgets.HTML("<p>Content of Tab 1</p>"), widgets.HTML("<p>Content of Tab 2</p>")]tab.set_title(0, 'Tab 1')tab.set_title(1, 'Tab 2')display(tab)Progress Bars
Section titled “Progress Bars”from ipywidgets import IntProgressfrom IPython.display import displayimport time
progress = IntProgress(min=0, max=100, description='Processing:')display(progress)
for i in range(101): progress.value = i time.sleep(0.02)
# tqdm integration (recommended)from tqdm.notebook import tqdm
for i in tqdm(range(100)): time.sleep(0.01)Plotting Libraries
Section titled “Plotting Libraries”# Matplotlib — staticimport matplotlib.pyplot as plt%matplotlib inline
fig, ax = plt.subplots()ax.plot([1, 2, 3], [4, 5, 6])plt.show()
# Plotly — interactiveimport plotly.express as pxfig = px.scatter(df, x='x', y='y', color='category', hover_data=['name'])fig.show()
# Altair — declarativeimport altair as altchart = alt.Chart(df).mark_circle().encode(x='x', y='y', color='category')chart
# Bokeh — interactivefrom bokeh.plotting import figure, showfrom bokeh.io import output_notebookoutput_notebook()p = figure(title="My Plot")p.circle([1, 2, 3], [4, 5, 6])show(p)Hiding Code Cells
Section titled “Hiding Code Cells”# Hide a specific cell's code (show only output)# Add tag 'hide-input' to cell metadata in JupyterLab:# View → Cell Toolbar → Tags → add 'hide-input'
# Or use nbconvert with hide_input extension