dcard's picture
replace
542501c
raw
history blame
No virus
1.6 kB
from vega_datasets import data
from scipy import stats
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
import panel as pn
import numpy as np
#import io
#import random
#from typing import List, Tuple
#import aiohttp
#import panel as pn
#from PIL import Image
#from transformers import CLIPModel, CLIPProcessor
pn.extension(design="bootstrap", sizing_mode="stretch_width")
source = data.seattle_weather()
pn.extension()
temp = sorted(source['temp_max'].values)
max_bins = int(np.ceil(max(temp))+ 1 - np.floor(min(temp)))
def create_plot(bandwidth=1.0, bins=max_bins):
plot = figure(width=300, height=300, toolbar_location=None)
# Histogram
#bins = np.arange(np.floor(min(temp)), np.ceil(max(temp))+1, 1)
hist, edges = np.histogram(temp, bins=bins)
hist = hist / hist.sum()
quad = plot.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:],
fill_color="grey", line_color="white", alpha=0.5)
# density
kernel = stats.gaussian_kde(temp, bw_method=bandwidth)
x = np.linspace(min(temp), max(temp), 100)
y = kernel(x)
col_source = ColumnDataSource(data=dict(x=x, y=y))
line = plot.line('x', 'y', source=col_source, alpha=1.0)
return plot
bw_widget = pn.widgets.FloatSlider(name="Bandwidth", value=1.0, start=0.03, end=2.0, step=0.02)
bins_widget = pn.widgets.IntSlider(name="Number of Bins", value=max_bins, start=1, end=max_bins)
bound_plot = pn.bind(create_plot, bandwidth=bw_widget, bins=bins_widget)
first_app = pn.Column(bw_widget, bins_widget, bound_plot)
first_app.servable()