Source code for doeasyeda.create_hist_plot

import altair as alt

# Define custom error handling
[docs] class DoEasyEDAException(Exception): def __init__(self, message, original_exception): super().__init__(f"{message}: {original_exception}") self.original_exception = original_exception
[docs] def create_hist_plot(df, x_col, y_col, color=None, title=None, x_title=None, y_title=None, tooltip=None, interactive=False, width=None, height=None): """ Creates a histogram using Altair with customizable options. Parameters ---------- df : pd.DataFrame Dataframe containing the data for the histogram. x_col : str The column name to be used for the x-axis. y_col : str The column name to be used for the y-axis. color : str, optional The column name to be used for color encoding (default is None). title : str, optional The title of the scatter plot (default is None). x_title : str, optional The title for the x-axis (default is None). y_title : str, optional The title for the y-axis (default is None). tooltip : list of str, optional List of column names to be used for tooltips (default is None). interactive : bool, optional If True, enables interactive features like zooming and panning (default is False). width : int, optional The width of the chart (default is None). height : int, optional The height of the chart (default is None). Returns ------- alt.Chart An Altair Chart object representing the scatter plot. Example ------- >>> data = pd.DataFrame({'category': ['A', 'A', 'B', 'B', 'C', 'C'], ... 'value': [10, 15, 10, 20, 5, 25]}) >>> create_hist_plot(data, x_col='category', y_col='value', color='category', ... title='Histogram of Values by Category', ... x_title='Category', y_title='Value', interactive=True) """ # Validate dataframe if df.empty: raise ValueError("Empty dataframe received!") # Validate input columns x_col, y_col, tooltip for col in [x_col, y_col] \ + ([color] if color else []) \ + (tooltip if isinstance(tooltip, list) else [tooltip] if tooltip else []): if col not in df.columns: raise ValueError(f"Column '{col}' not found in dataframe!") # More checking can be added here try: # Set Altair base chart chart = alt.Chart(df).mark_bar() # Set Altair encoding with optional color and tooltip encoding = { 'x': alt.X(x_col, title=x_title), 'y': alt.Y(y_col, title=y_title) } if color: encoding['color'] = color if tooltip: encoding['tooltip'] = tooltip if isinstance(tooltip, list) else [tooltip] # Pass the encoding to chart chart = chart.encode(**encoding) # Set optional title, interactive, width and height if title: chart = chart.properties(title=title) if interactive: chart = chart.interactive() if width and height: chart = chart.properties(width=width, height=height) return chart except Exception as e: # Error Handling raise DoEasyEDAException("Error in creating scatter plot", e)