Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env ruby

require 'rubygems'
require 'fastercsv'
require 'gruff'
require 'pp'

def random_color
  colors = %w(green blue red orange yellow puple)
  colors[rand(colors.length)]
end

date_re = "[0-9]{2,}"

data = FasterCSV.read('/Users/kastner/Documents/downloads/adsense_aj.csv', :headers => true, :col_sep => "\t")

i = 0
months = data.inject(Hash.new(0)) do |hash, line|
  i += 1
  if line["Date"].match(date_re)
    month = Date.parse(line["Date"]).strftime("%m/%y")
    hash[month] = i
  end
  hash
end

labels = Hash[*months.collect{|k,v| [v,k]}.flatten]

["Page impressions", "Clicks", "Page CTR", "Page eCPM", "Earnings"].each do |key|
  g = Gruff::Line.new("1100x700")
  g.title = key
  g.labels = labels
  g.baseline_color = random_color
  
  key_data = data.collect { |line| line[key].to_f if line["Date"].match(date_re) }
  key_data = key_data.find_all{ |y| y }
  
  g.data(key, key_data)
  g.write "adsense_#{key.downcase.gsub(/\s/,'_')}.png"
  
  puts "#{key} done."
end