How to display only sticky posts on category pages?

You can try to fetch the sticky posts IDs from the sticky_posts option and then modify the main query on the category archives accordingly:

/**
 * Category Archives: Only display sticky posts for each category term
 */
add_action( 'pre_get_posts', function( \WP_Query $q )
{
    if( ! is_admin() && $q->is_category() && $q->is_main_query() )
    {
        $sticky_posts = get_option( 'sticky_posts' );
        if( ! empty( $sticky_posts ) )
            $q->set( 'post__in', (array) $sticky_posts );
    }
} );

Note that here we’re using a simplification by querying for all those sticky posts, regardless of it’s categories. We let the taxonomy query of the main query do the filtering instead.