我有一个代码,我从实用数据科学食谱书中可以看到,他们使用folium和twitter来绘制Twitter粉丝的地理位置。代码运行良好,最后它输出一个html文件,该文件应该包含你的粉丝所在的标记。但是,尽管有数据,我的地图上没有任何标记。
以下是代码:
status_geo = []
status_geo_screen_names = []
for fp in friends_profiles:
if ('status' in fp and fp['status']['geo'] is not None and 'screen_name' in fp):
status_geo.append(fp['status']['geo'])
status_geo_screen_names.append(fp['screen_name'])
print status_geo
输出: [{u' type&#39 ;: u' Point',u' coordinates':[37.27647779,-121.98564579]},{u' type':u&#39 ;点',你'坐标':[33.64158125,-84.43924375]},{u'类型':你'点',你'坐标' :[33.81747122,-116.52908589]},{u' type&#39 ;: u' Point',u' coordinates':[34.01340657,-118.17538228]},{u'键入':点',你'坐标':[38.7974924,-76.1285375]},{u'键入':你'点',你坐标':[43.579385,-116.198543]},{u'输入':你'点',你'坐标':[51.69102332,-0.41811924 ]},{u'输入':你'点',你'坐标':[40.494286,-74.44376]},{u' type':u& #39;点',u'坐标':[53.60089695,-113.49052185]}
print status_geo_screen_names
输出: [u' TicaCoffee',你' sekouandrews',你' Kimtuitive',你' isalsa4u',u' ConsWahoo',u' cre8commongood',u' BrookeHRob',u' pedrohernandez',u' khueggen',u' DMCONCREPUMP',' PhillipLeslie'。 ..]
import folium
from itertools import izip
#Let Folium determine the scale
map = folium.Map(location=[38, -120],zoom_start=3)
for sg, sn in izip(status_geo, status_geo_screen_names):
map.simple_marker(sg['coordinates'], popup=str(sn))
map.create_map(path='us_states.html')
我们应该看到这样的事情: 但无论我在哪里看或缩放,我的地图都没有任何标记:
答案 0 :(得分:2)
我认为这里的问题是你不应该直接在浏览器中查看生成的html,因为它依赖于在文件:///路径中可能无法正确引用的外部javascript库。
尝试使用简单的python服务器来提供该文件。
首先进入生成的html文件所在的目录。 $ cd / path / to / generated / html / file
$ python -m SimpleHTTPServer 8000
现在转到您的浏览器并输入http://localhost:8000/us_states.html(在您的情况下)
希望有所帮助。
答案 1 :(得分:0)
我最近编写了一些采用原始Twitter数据的代码,并使用用户名,经度和纬度从中创建了一个CSV文件,这在Google地球中很好地打开了。假设您已经拥有原始的Twitter数据,那么您应该能够使用它。
import sys
import csv
import json
in_file = raw_input("File to read ex: 'C:\\Python27\\twitdata.txt': ")
out_file = raw_input("CSV file/location to write: ")
csvfile = file(out_file, "w")
csvwriter = csv.writer(csvfile)
row = [ "user", "latitude", "longitude" ]
csvwriter.writerow(row)
tweets_file = open(in_file, 'r')
for line in tweets_file:
try:
tweet = json.loads(line)
user = tweet['user']['screen_name']
latitude = tweet["geo"]["coordinates"][0]
longitude = tweet["geo"]["coordinates"][1]
row = [ user, latitude, longitude ]
csvwriter.writerow(row)
except:
continue
print "done "
csvfile.close()