| import matplotlib.pyplot as plt |
| import seaborn as sns |
| import pandas as pd |
| import numpy as np |
|
|
| class VisualizationSelector: |
| def select_visualizations(self, data): |
| visualizations = [] |
| |
| |
| numeric_columns = data.select_dtypes(include=[np.number]).columns |
| for column in numeric_columns: |
| fig, ax = plt.subplots() |
| sns.histplot(data[column], kde=True, ax=ax) |
| ax.set_title(f'Distribution of {column}') |
| visualizations.append(fig) |
|
|
| |
| if len(numeric_columns) > 1: |
| fig, ax = plt.subplots(figsize=(10, 8)) |
| sns.heatmap(data[numeric_columns].corr(), annot=True, cmap='coolwarm', ax=ax) |
| ax.set_title('Correlation Heatmap') |
| visualizations.append(fig) |
|
|
| |
| if len(numeric_columns) > 1: |
| fig = sns.pairplot(data[numeric_columns]) |
| fig.fig.suptitle('Scatter Plot Matrix', y=1.02) |
| visualizations.append(fig) |
|
|
| |
| categorical_columns = data.select_dtypes(include=['object']).columns |
| for cat_col in categorical_columns: |
| for num_col in numeric_columns: |
| fig, ax = plt.subplots() |
| sns.boxplot(x=cat_col, y=num_col, data=data, ax=ax) |
| ax.set_title(f'{cat_col} vs {num_col}') |
| ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right') |
| visualizations.append(fig) |
|
|
| return visualizations |