abraham9486937737
Deploy MySpace Ooty Analytics to Hugging Face - with KPI styling updates
04b129a
"""
Reusable chart components for Streamlit dashboard
"""
import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
import numpy as np
from typing import Optional, List
def create_line_chart(df: pd.DataFrame, x: str, y: str, title: str,
color: Optional[str] = None, height: int = 500) -> go.Figure:
"""Create a line chart"""
fig = px.line(df, x=x, y=y, title=title, color=color, height=height)
fig.update_layout(
hovermode='x unified',
template='plotly_white',
)
return fig
def create_bar_chart(df: pd.DataFrame, x: str, y: str, title: str,
color: Optional[str] = None, height: int = 500) -> go.Figure:
"""Create a bar chart"""
fig = px.bar(df, x=x, y=y, title=title, color=color, height=height)
fig.update_layout(
template='plotly_white',
showlegend=True,
)
return fig
def create_scatter_plot(df: pd.DataFrame, x: str, y: str, title: str,
size: Optional[str] = None, color: Optional[str] = None,
height: int = 500) -> go.Figure:
"""Create a scatter plot"""
fig = px.scatter(df, x=x, y=y, title=title, size=size, color=color, height=height)
fig.update_layout(
template='plotly_white',
hovermode='closest',
)
return fig
def create_histogram(df: pd.DataFrame, column: str, title: str,
nbins: int = 30, height: int = 500) -> go.Figure:
"""Create a histogram"""
fig = px.histogram(df, x=column, title=title, nbins=nbins, height=height)
fig.update_layout(
template='plotly_white',
xaxis_title=column,
yaxis_title='Frequency',
)
return fig
def create_box_plot(df: pd.DataFrame, y: str, x: Optional[str] = None,
title: str = "Box Plot", height: int = 500) -> go.Figure:
"""Create a box plot"""
fig = px.box(df, x=x, y=y, title=title, height=height)
fig.update_layout(template='plotly_white')
return fig
def create_heatmap(data: np.ndarray, x_labels: List[str], y_labels: List[str],
title: str = "Heatmap", height: int = 600) -> go.Figure:
"""Create a heatmap"""
fig = go.Figure(data=go.Heatmap(
z=data,
x=x_labels,
y=y_labels,
colorscale='Viridis',
))
fig.update_layout(
title=title,
height=height,
template='plotly_white',
)
return fig
def create_pie_chart(df: pd.DataFrame, values: str, names: str,
title: str = "Pie Chart", height: int = 500) -> go.Figure:
"""Create a pie chart"""
fig = px.pie(df, values=values, names=names, title=title, height=height)
fig.update_layout(template='plotly_white')
return fig