datapilot-cli
Version:
Enterprise-grade streaming multi-format data analysis with comprehensive statistical insights and intelligent relationship detection - supports CSV, JSON, Excel, TSV, Parquet - memory-efficient, cross-platform
524 lines • 15.8 kB
TypeScript
/**
* Advanced Chart Composition Engine
*
* Sophisticated engine for multi-dimensional data encoding and aesthetic optimization:
* - Multi-dimensional visual encoding strategies
* - Perceptual optimization based on human visual cognition
* - Data-driven color theory and aesthetic decisions
* - Advanced visual hierarchy and composition principles
* - Cross-cultural and accessibility considerations
*/
export interface CompositionProfile {
visualEncoding: MultiDimensionalEncoding;
aestheticProfile: AestheticProfile;
perceptualOptimization: PerceptualOptimization;
accessibilityCompliance: AccessibilityCompliance;
culturalAdaptation: CulturalAdaptation;
compositionPrinciples: CompositionPrinciple[];
qualityMetrics: VisualQualityMetrics;
}
export interface MultiDimensionalEncoding {
primaryDimensions: EncodingDimension[];
secondaryDimensions: EncodingDimension[];
encodingEfficiency: number;
cognitiveLoad: number;
informationDensity: number;
redundantEncodings: RedundantEncoding[];
hierarchicalStructure: VisualHierarchy;
}
export interface EncodingDimension {
channel: VisualChannel;
dataField: string;
dataType: DataType;
encodingStrength: number;
perceptualAccuracy: number;
discriminability: number;
orderingPreservation: number;
optimization: ChannelOptimization;
}
export type VisualChannel = 'position_x' | 'position_y' | 'position_angle' | 'position_radius' | 'color_hue' | 'color_saturation' | 'color_lightness' | 'color_opacity' | 'size_area' | 'size_length' | 'size_width' | 'size_volume' | 'shape' | 'texture' | 'orientation' | 'motion' | 'typography_weight' | 'typography_style' | 'typography_size';
export type DataType = 'quantitative' | 'ordinal' | 'nominal' | 'temporal' | 'spatial';
export interface ChannelOptimization {
scalingFunction: 'linear' | 'log' | 'sqrt' | 'pow' | 'ordinal' | 'threshold';
domainOptimization: DomainOptimization;
rangeOptimization: RangeOptimization;
perceptualCorrection: PerceptualCorrection;
}
export interface DomainOptimization {
zeroBehavior: 'include' | 'exclude' | 'anchor';
outlierHandling: 'clip' | 'compress' | 'highlight' | 'separate';
domainPadding: number;
symmetryPreservation: boolean;
}
export interface RangeOptimization {
minValue: number;
maxValue: number;
resolution: number;
perceptualUniformity: boolean;
physicalConstraints: PhysicalConstraint[];
}
export interface PhysicalConstraint {
constraint: string;
value: number;
reasoning: string;
}
export interface PerceptualCorrection {
gammaCorrection: number;
luminanceAdjustment: number;
contrastEnhancement: number;
colorBlindnessCompensation: ColorBlindnessCorrection;
}
export interface ColorBlindnessCorrection {
protanopia: number;
deuteranopia: number;
tritanopia: number;
achromatopsia: number;
}
export interface RedundantEncoding {
primaryChannel: VisualChannel;
redundantChannel: VisualChannel;
redundancyLevel: number;
purpose: 'accessibility' | 'emphasis' | 'clarity' | 'error_prevention';
effectiveness: number;
}
export interface VisualHierarchy {
levels: HierarchyLevel[];
focusPoints: FocusPoint[];
visualFlow: FlowDirection[];
attentionGuides: AttentionGuide[];
}
export interface HierarchyLevel {
level: number;
elements: string[];
visualWeight: number;
precedence: number;
}
export interface FocusPoint {
element: string;
attentionWeight: number;
visualTechniques: string[];
cognitiveReasoning: string;
}
export interface FlowDirection {
from: string;
to: string;
strength: number;
technique: 'color_gradient' | 'size_progression' | 'position_flow' | 'line_connection';
}
export interface AttentionGuide {
technique: string;
target: string;
effectiveness: number;
subtlety: number;
}
export interface AestheticProfile {
colorHarmony: ColorHarmony;
typographySystem: TypographySystem;
spatialRhythm: SpatialRhythm;
visualBalance: VisualBalance;
proportionSystem: ProportionSystem;
styleConsistency: StyleConsistency;
}
export interface ColorHarmony {
scheme: ColorScheme;
palette: ColorPalette;
psychologicalImpact: PsychologicalImpact;
semanticMapping: SemanticColorMapping[];
harmonyScore: number;
}
export interface ColorScheme {
type: 'monochromatic' | 'analogous' | 'complementary' | 'triadic' | 'tetradic' | 'split_complementary';
baseColor: HSLColor;
harmony: HSLColor[];
reasoning: string;
}
export interface HSLColor {
hue: number;
saturation: number;
lightness: number;
alpha?: number;
}
export interface ColorPalette {
categorical: HSLColor[];
sequential: HSLColor[];
diverging: HSLColor[];
specialPurpose: Map<string, HSLColor>;
accessibilityScore: number;
harmonyType?: string;
}
export interface PsychologicalImpact {
emotion: string;
energy: number;
trust: number;
professionalism: number;
clarity: number;
}
export interface SemanticColorMapping {
concept: string;
color: HSLColor;
culturalRelevance: number;
universalRecognition: number;
}
export interface TypographySystem {
hierarchy: TypographyHierarchy;
readability: ReadabilityMetrics;
personality: TypographyPersonality;
technicalOptimization: TypographyOptimization;
}
export interface TypographyHierarchy {
levels: TypographyLevel[];
scaleRatio: number;
baselineGrid: number;
verticalRhythm: number;
}
export interface TypographyLevel {
level: string;
fontSize: number;
fontWeight: number;
lineHeight: number;
letterSpacing: number;
usage: string;
}
export interface ReadabilityMetrics {
contrastRatio: number;
optimalReadingDistance: number;
cognitiveLoad: number;
scanability: number;
}
export interface TypographyPersonality {
formality: number;
friendliness: number;
authority: number;
creativity: number;
}
export interface TypographyOptimization {
hinting: boolean;
subpixelRendering: boolean;
optimalSizes: number[];
performanceImpact: number;
}
export interface SpatialRhythm {
gridSystem: GridSystem;
spacingScale: SpacingScale;
alignmentPrinciples: AlignmentPrinciple[];
proximityRules: ProximityRule[];
}
export interface GridSystem {
type: 'modular' | 'columnar' | 'baseline' | 'golden_ratio' | 'rule_of_thirds';
columns: number;
gutters: number;
margins: Margins;
breakpoints: Breakpoint[];
}
export interface Margins {
top: number;
right: number;
bottom: number;
left: number;
}
export interface Breakpoint {
name: string;
width: number;
adaptations: string[];
}
export interface SpacingScale {
baseUnit: number;
scale: number[];
semanticSpacing: Map<string, number>;
opticalAdjustments: OpticalAdjustment[];
}
export interface OpticalAdjustment {
context: string;
adjustment: number;
reasoning: string;
}
export interface AlignmentPrinciple {
principle: string;
strength: number;
applications: string[];
}
export interface ProximityRule {
rule: string;
distance: number;
relationship: string;
}
export interface VisualBalance {
type: 'symmetrical' | 'asymmetrical' | 'radial' | 'crystallographic';
weight: VisualWeight;
tension: VisualTension[];
stability: number;
}
export interface VisualWeight {
distribution: WeightDistribution[];
center: Point;
moments: number[];
}
export interface WeightDistribution {
element: string;
weight: number;
position: Point;
influence: number;
}
export interface Point {
x: number;
y: number;
}
export interface VisualTension {
source: string;
target: string;
strength: number;
type: 'attractive' | 'repulsive' | 'directional';
}
export interface ProportionSystem {
system: 'golden_ratio' | 'rule_of_thirds' | 'fibonacci' | 'modular_scale' | 'harmonic';
ratios: number[];
applications: ProportionApplication[];
aestheticScore: number;
}
export interface ProportionApplication {
element: string;
ratio: number;
reasoning: string;
}
export interface StyleConsistency {
consistencyScore: number;
deviations: StyleDeviation[];
unifyingElements: string[];
brandAlignment: number;
}
export interface StyleDeviation {
element: string;
inconsistency: string;
impact: number;
recommendation: string;
}
export interface PerceptualOptimization {
gestaltPrinciples: GestaltApplication[];
cognitiveLoad: CognitiveLoadAnalysis;
attentionFlow: AttentionFlowAnalysis;
memorability: MemorabilityFactors;
usabilityMetrics: UsabilityMetrics;
}
export interface GestaltApplication {
principle: 'proximity' | 'similarity' | 'closure' | 'continuity' | 'figure_ground' | 'common_fate';
application: string;
effectiveness: number;
cognitiveSupport: string;
}
export interface CognitiveLoadAnalysis {
intrinsicLoad: number;
extraneousLoad: number;
germaneLoad: number;
totalLoad: number;
recommendations: LoadReduction[];
}
export interface LoadReduction {
technique: string;
reduction: number;
tradeoffs: string[];
}
export interface AttentionFlowAnalysis {
entryPoints: AttentionPoint[];
flowPath: AttentionPath[];
exitPoints: AttentionPoint[];
distractions: Distraction[];
flowEfficiency: number;
}
export interface AttentionPoint {
element: string;
strength: number;
duration: number;
purpose: string;
}
export interface AttentionPath {
from: string;
to: string;
probability: number;
facilitators: string[];
barriers: string[];
}
export interface Distraction {
element: string;
distractionLevel: number;
impact: string;
mitigation: string;
}
export interface MemorabilityFactors {
distinctiveness: number;
meaningfulness: number;
simplicity: number;
emotionalImpact: number;
overallMemorability: number;
}
export interface UsabilityMetrics {
learnability: number;
efficiency: number;
memorability: number;
errorPrevention: number;
satisfaction: number;
overall: number;
}
export interface AccessibilityCompliance {
wcagLevel: 'A' | 'AA' | 'AAA';
colorBlindnessSupport: ColorBlindnessSupport;
contrastCompliance: ContrastCompliance;
motorImpairmentSupport: MotorImpairmentSupport;
cognitiveSupport: CognitiveSupport;
screenReaderCompatibility: ScreenReaderCompatibility;
complianceScore: number;
}
export interface ColorBlindnessSupport {
protanopia: number;
deuteranopia: number;
tritanopia: number;
achromatopsia: number;
alternativeEncodings: string[];
}
export interface ContrastCompliance {
minimumContrast: number;
enhancedContrast: number;
graphicalObjectContrast: number;
complianceLevel: 'fail' | 'AA' | 'AAA';
}
export interface MotorImpairmentSupport {
minimumTargetSize: number;
spacing: number;
dragAlternatives: string[];
keyboardNavigation: boolean;
}
export interface CognitiveSupport {
complexityReduction: string[];
memoryAids: string[];
consistentPatterns: string[];
errorPrevention: string[];
}
export interface ScreenReaderCompatibility {
ariaCompliance: boolean;
textAlternatives: boolean;
structuralMarkup: boolean;
focusManagement: boolean;
}
export interface CulturalAdaptation {
readingDirection: 'ltr' | 'rtl' | 'ttb';
colorCulturalMeaning: CulturalColorMeaning[];
symbolismAdaptation: SymbolismAdaptation[];
numeralSystem: string;
dateFormat: string;
localizations: Localization[];
}
export interface CulturalColorMeaning {
color: HSLColor;
culture: string;
meaning: string;
appropriateness: number;
alternatives: HSLColor[];
}
export interface SymbolismAdaptation {
symbol: string;
culture: string;
meaning: string;
appropriateness: number;
alternative: string;
}
export interface Localization {
locale: string;
adaptations: string[];
priority: number;
}
export interface CompositionPrinciple {
principle: string;
application: string;
strength: number;
visualImpact: string;
reasoning: string;
}
export interface VisualQualityMetrics {
aestheticScore: number;
functionalScore: number;
accessibilityScore: number;
usabilityScore: number;
originalityScore: number;
overallQuality: number;
improvementAreas: ImprovementArea[];
}
export interface ImprovementArea {
area: string;
currentScore: number;
potentialScore: number;
recommendations: string[];
priority: 'low' | 'medium' | 'high' | 'critical';
}
/**
* Advanced Chart Composition Engine
*/
export declare class ChartComposer {
/**
* Generate comprehensive composition profile for a visualization
*/
static composeVisualization(chartType: string, dimensions: EncodingDimension[], dataCharacteristics: any, contextualRequirements?: any): CompositionProfile;
/**
* Optimize multi-dimensional encoding for maximum effectiveness
*/
private static optimizeMultiDimensionalEncoding;
/**
* Generate comprehensive aesthetic profile
*/
private static generateAestheticProfile;
/**
* Optimize for human visual perception
*/
private static optimizePerception;
private static getChannelEffectivenessRanking;
private static optimizeChannelAssignment;
private static calculateEncodingEfficiency;
private static calculateCognitiveLoad;
private static calculateInformationDensity;
private static generateColorHarmony;
private static calculateDiscriminability;
private static calculateOrderingPreservation;
private static optimizeChannel;
private static calculateRedundancy;
private static getInteractionComplexity;
private static generateRedundantEncodings;
private static createVisualHierarchy;
private static selectBaseColor;
private static selectColorScheme;
private static generateHarmoniousColors;
private static generateComprehensivePalette;
private static assessPsychologicalImpact;
private static createSemanticColorMappings;
private static calculateHarmonyScore;
private static designTypographySystem;
private static establishSpatialRhythm;
private static calculateVisualBalance;
private static selectProportionSystem;
private static ensureStyleConsistency;
private static applyGestaltPrinciples;
private static analyzeCognitiveLoad;
private static analyzeAttentionFlow;
private static assessMemorability;
private static calculateUsabilityMetrics;
private static ensureAccessibility;
private static adaptForCulture;
private static applyCompositionPrinciples;
private static assessVisualQuality;
private static generateVisualFlow;
private static selectFlowTechnique;
private static analyzeDataSentiment;
private static calculateDataComplexity;
private static hexToHSL;
private static calculateHueSpread;
private static evaluateColorTheoryCompliance;
private static checkAnalogousCompliance;
private static checkComplementaryCompliance;
private static checkTriadicCompliance;
private static checkTetradicCompliance;
private static checkMonochromaticCompliance;
private static calculateAccessibilityBonus;
private static checkRedGreenProblems;
private static calculateCulturalBonus;
private static calculateOriginalityScore;
private static identifyImprovementAreas;
private static calculateVariance;
}
//# sourceMappingURL=chart-composer.d.ts.map