按照相类似的模式,该脚本接受了一个界面名称,然后遍历该用户的粉丝,从当前粉丝中提取时区并把它存放在tweetlocation哈希表中。需要注意的是,你先要检测该键值是否已经存在于哈希表中,若是的话,增加该键值的计数。你还可以记住所有时区的个数,以用于后面的百分比的计算。
这一脚本的最后一部分内容是构造Google Pie Chart的URL,创建一个新的PieChart,指定一些选项(大小、标题和是否为3D等);接着,遍历时区哈希表,找出用于图表的时区串的数据(删去&符号)以及该时区计数与总数的百分比。
清单7.通过Twitter的时区来构建一个饼图(followers-location.rb)
#!/usr/bin/env ruby
require "rubygems"
require "twitter"
require 'google_chart'
screen_name = String.new ARGV[0]
tweetlocation = Hash.new
timezones = 0.0
# Authenticate
Twitter.configure do |config|
config.consumer_key = ''
config.consumer_secret = ''
config.oauth_token = '
config.oauth_token_secret = ''
end
# Iterate followers, hash their location
followers = Twitter.followers.users.each do |f|
loc = f.time_zone.to_s
if (loc.length > 0)
if tweetlocation.has_key?(loc)
tweetlocation[loc] = tweetlocation[loc] + 1
else
tweetlocation[loc] = 1
end
timezones = timezones + 1.0
end
end
# Create a pie chart
GoogleChart::PieChart.new('650x350', "Time Zones", false ) do |pc|
tweetlocation.each do |loc,count|
pc.data loc.to_s.delete("&"), (count/timezones*100).round
end
puts pc.to_url
end
若要执行清单7中的脚本,给它提供一个Twitter界面显示名称,然后把得出的URL拷贝并粘贴到浏览器中,清单8给出了这一过程及最终生成的URL。
清单8. 调用followers-location脚本(结果只是一行来的)
$ ./followers-location.rb MTimJones http://chart.apis.google.com/chart?chl=Seoul|Santiago|Paris|Mountain+Time+(US++Canada)| Madrid|Central+Time+(US++Canada)|Warsaw|Kolkata|London|Pacific+Time+(US++Canada)| New+Delhi|Pretoria|Quito|Dublin|Moscow|Istanbul|Taipei|Casablanca|Hawaii|Mumbai| International+Date+Line+West|Tokyo|Ulaan+Bataar|Vienna|Osaka|Alaska|Chennai|Bern| Brasilia|Eastern+Time+(US++Canada)|Rome|Perth|La+Paz &chs=650x350&chtt=Time+Zones&chd=s:KDDyKcKDOcKDKDDDDDKDDKDDDDOKK9DDD&cht=p $
把清单8中的URL粘贴到浏览器中,你就可以得到图1所示的结果。
图1. Twitter粉丝位置分布的饼图

Twitter用户的行为
Twitter包含了大量的数据,你可以通过挖掘这些数据来了解用户行为的某些要素。两个简单例子将用来分析Twitter用户何时发布消息以及通过什么应用来发布消息,你可以使用下面两个简单的脚本来提取并可视化这些信息。
清单9给出的脚本遍历了某个特定用户的tweet消息(使用user_timeline方法),然后从每条tweet消息中提取出该tweet消息形成的具体时间,一个简单的哈希表被再次用来统计一周中每天的计数,然后以与前面的时区例子相类似的方式使用Google Charts生成一个柱状图。










