Analyzes the artist's creative evolution over time including medium progression, style development, theme evolution, and creative phases. This function provides rich narrative material for storytelling about artistic growth and development.

Migration-Ready: This function is designed to be moved to artutils in the future. It is a pure data function with no Shiny dependencies.

get_artist_evolution(artist_uuid, cn)

Arguments

artist_uuid

Character. Artist UUID (validated for proper format)

cn

Database connection object (from artcore::dbc())

Value

A named list with the following elements:

medium_progression

Data frame with columns: medium, first_used, last_used, artwork_count, period

dominant_mediums

Character vector of most frequently used mediums (top 3)

medium_diversity_score

Numeric (0-100). Higher = more diverse medium exploration

style_evolution

Data frame tracking style keywords over time

theme_evolution

Data frame with recurring themes and their prevalence over time

creative_phases

Data frame identifying distinct creative periods

experimentation_periods

Data frame highlighting periods of high exploration

signature_elements

List of recurring elements that define the artist's voice

Details

The function analyzes artistic evolution by:

  • Tracking medium usage chronologically

  • Identifying style development patterns

  • Analyzing recurring themes and subject matter

  • Detecting creative phases based on clustering of similar work

  • Highlighting periods of experimentation (high diversity)

Creative Phases Detection: Phases are identified by analyzing temporal clusters of similar mediums, styles, and themes. A new phase begins when there's significant divergence from the previous period's dominant characteristics.

Medium Diversity Score: Calculated using Shannon entropy normalized to 0-100 scale. Higher scores indicate more diverse medium exploration.

Database Tables

  • app.artwork_index (artist_uuid, created_utc, title)

  • app.artwork_metadata (artwork_uuid, medium, style_keywords)

  • app.artwork_tags (artwork_uuid, tag_name, tag_category)

See also

get_artist_timeline for temporal milestones, get_artist_unique_insights for unique insights generation

Examples

if (FALSE) { # \dontrun{
cn <- artcore::dbc()
artist_uuid <- "123e4567-e89b-12d3-a456-426614174000"
evolution <- get_artist_evolution(artist_uuid, cn)

# Access evolution data
evolution$medium_progression # How mediums have been explored
evolution$dominant_mediums # Top 3 most used mediums
evolution$medium_diversity_score # How diverse is their practice
evolution$creative_phases # Distinct periods in their career

artcore::dbd(cn)
} # }