React visualization components for ExplainAI
npm install explainai-ui
React visualization components for ExplainAI explanations.


``bash`
npm install explainai-ui explainai-core
Peer Dependencies:
- react@^18.0.0react-dom@^18.0.0
-
- 📊 Interactive Charts - Beautiful, responsive visualizations
- 🎨 Customizable Themes - Match your application's design
- âš¡ Lightweight - Minimal bundle size impact
- 📱 Responsive - Works on all screen sizes
- ♿ Accessible - WCAG compliant components
- 🔧 TypeScript - Full type safety
Display feature importance values as horizontal bars.
`tsx
import { FeatureImportanceChart } from 'explainai-ui';
import { explain, createApiModel } from 'explainai-core';
function MyComponent() {
const [explanation, setExplanation] = useState(null);
useEffect(() => {
const model = createApiModel(apiConfig, metadata);
explain(model, input, { method: 'shap' })
.then(setExplanation);
}, []);
return (
maxFeatures={10}
showValues={true}
/>
);
}
`
Props:
- explanation (required): Explanation object from explainai-coremaxFeatures
- (optional): Number of top features to display (default: 10)showValues
- (optional): Show numerical values (default: true)width
- (optional): Chart width (default: '100%')height
- (optional): Chart height (default: 400)
Specialized visualization for LIME explanations.
`tsx
import { LimeChart } from 'explainai-ui';
function LimeVisualization({ explanation }) {
return (
featureNames={['age', 'income', 'credit_score']}
showPrediction={true}
/>
);
}
`
Props:
- explanation (required): LIME explanation from explainai-corefeatureNames
- (optional): Custom feature labelsshowPrediction
- (optional): Display prediction value (default: true)colorScheme
- (optional): 'blue' | 'green' | 'purple' (default: 'blue')
Advanced visualization for SHAP values with waterfall display.
`tsx
import { ShapleyChart } from 'explainai-ui';
function ShapVisualization({ explanation }) {
return (
showBaseValue={true}
orientation="horizontal"
/>
);
}
`
Props:
- explanation (required): SHAP explanation from explainai-coreshowBaseValue
- (optional): Display base value (default: true)orientation
- (optional): 'horizontal' | 'vertical' (default: 'horizontal')sortByImportance
- (optional): Sort features by importance (default: true)
`tsx
import React, { useState, useEffect } from 'react';
import { explain, createApiModel } from 'explainai-core';
import { FeatureImportanceChart, LimeChart, ShapleyChart } from 'explainai-ui';
function ModelExplainer() {
const [explanation, setExplanation] = useState(null);
const [method, setMethod] = useState('shap');
const [loading, setLoading] = useState(false);
const generateExplanation = async () => {
setLoading(true);
const model = createApiModel(
{ endpoint: 'http://localhost:3000/predict' },
{
inputShape: [10],
outputShape: [1],
modelType: 'regression',
provider: 'api'
}
);
const result = await explain(model, inputData, {
method,
config: { samples: 100 }
});
setExplanation(result);
setLoading(false);
};
return (
{loading &&
Generating explanation...
} {explanation && (
<>
{method === 'shap' && (
)}
{method === 'lime' && (
)}
maxFeatures={15}
/>
>
)}
export default ModelExplainer;
`
Components come with default styles:
`tsx`
import 'explainai-ui/dist/styles.css';
Override default styles with CSS variables:
`css`
:root {
--explainai-primary-color: #3b82f6;
--explainai-positive-color: #10b981;
--explainai-negative-color: #ef4444;
--explainai-background: #ffffff;
--explainai-text-color: #1f2937;
--explainai-border-color: #e5e7eb;
}
Or use inline styles:
`tsx`
style={{
backgroundColor: '#f9fafb',
borderRadius: '8px',
padding: '16px'
}}
/>
Full TypeScript definitions included:
`tsx`
import type {
FeatureImportanceChartProps,
LimeChartProps,
ShapleyChartProps,
ChartTheme
} from 'explainai-ui';
All components are responsive by default:
`tsx`
width="100%" // Fills container
height={400}
/>
For mobile-specific layouts:
`tsx
const isMobile = window.innerWidth < 768;
orientation={isMobile ? 'vertical' : 'horizontal'}
/>
`
All components follow WCAG 2.1 guidelines:
- Proper ARIA labels
- Keyboard navigation support
- Screen reader compatible
- High contrast mode support
Components are optimized with React.memo:
`tsx
import { memo } from 'react';
const MemoizedChart = memo(FeatureImportanceChart);
`
Load components on demand:
`tsx
import { lazy, Suspense } from 'react';
const ShapleyChart = lazy(() => import('explainai-ui').then(m => ({
default: m.ShapleyChart
})));
function App() {
return (
Framework Integration
$3
`tsx
// app/components/ExplainChart.tsx
'use client';import { FeatureImportanceChart } from 'explainai-ui';
import 'explainai-ui/dist/styles.css';
export default function ExplainChart({ explanation }) {
return ;
}
`$3
`tsx
// vite.config.ts
export default {
optimizeDeps: {
include: ['explainai-ui', 'explainai-core']
}
}
``- explainai-core - Core algorithms (required)
- explainai-node - Node.js CLI tools
- explainai-playground - Interactive demo
- Full Documentation
- Component Gallery
- Examples
- API Reference
- React ≥18.0.0
- React DOM ≥18.0.0
- Node.js ≥18.0.0
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
- Mobile browsers
MIT - see LICENSE
Contributions welcome! See Contributing Guide
Yash Gupta (@gyash1512)