
I tried both.

With the plot package: #lang racket
(require csv-reading plot)
(define input-filename "gfa.csv")
(struct row (age count gender) #:transparent)
(define data
(rest (csv-map (λ (items)
(row (string->number (first items))
(string->number (second items))
(string->symbol (third items))))
(file->string input-filename))))
(define (filter-gender rows gender)
(filter (λ (x) (eq? (row-gender x) gender))
rows))
(define (row->xy a-row)
(vector (row-age a-row) (row-count a-row)))
(plot (list (discrete-histogram
(map row->xy (filter-gender data 'male))
#:skip 2.5 #:x-min 0 #:label "Male")
(discrete-histogram
(map row->xy (filter-gender data 'female))
#:skip 2.5 #:x-min 1 #:label "Female" #:color 2 #:line-color 2))
#:title "Breakdown of Applications" #:x-label "Age" #:y-label "Applications")

With graphite, I must be doing something wrong. #lang racket
(require sawzall data-frame graphite)
(define df (df-read/csv "gfa.csv"))
(graph #:data df
#:title "Breakdown of Applications" #:x-label "Age" #:y-label "Applications"
#:mapping (aes #:x "age" #:y "count" #:group "gender")
#:width 600 #:height 400
(bar))

This is gfa.csv: age,count,gender
14,4,female
14,26,male
15,17,female
15,22,male
16,9,female
16,21,male
17,13,female
17,24,male
18,1,female
18,9,male
19,4,male
19,1,female
20,4,male

@hazel What I am doing wrong in graphite?