【发布时间】:2017-12-19 18:39:15
【问题描述】:
我已在此处成功复制了此交互式仪表板地图example。
我现在想输入我自己的数据。我的 python 比示例中的更简单,因为我的所有数据都已经按照我想要的方式进行了结构化。 这是我的蟒蛇:
# -*- coding: utf-8 -*-
import pandas as pd
from shapely.geometry import Point, shape
from flask import Flask
from flask import render_template
import json
data_path = './input/'
def get_location(longitude, latitude, ny_json):
point = Point(longitude, latitude)
for record in ny_json['features']:
polygon = shape(record['geometry'])
if polygon.contains(point):
return record['properties']['Name']
return 'other'
with open(data_path + '/geojson/ny_HA.json') as data_file:
ny_json = json.load(data_file)
app = Flask(__name__)
#route to html index
@app.route("/")
def index():
return render_template("index.html")
#route data
@app.route("/data")
def get_data():
df = pd.read_csv(data_path + 'Mikes_NY_geocoded_tickets.csv', sep=';')
df['location'] = df.apply(lambda row: get_location(row['longitude'], row['latitude'], ny_json), axis=1)
cols_to_keep = ['timestamp', 'longitude', 'latitude', 'Violation', 'Type', 'DayOfWeek', 'location']
#remove NaN values
df_clean = df[cols_to_keep].dropna()
#return a json
return df_clean.to_json(orient='records')
if __name__ == "__main__":
app.run(host='0.0.0.0',port=5000,debug=True)
当我运行我的应用程序python app.py 时,没有错误,当我在浏览器中输入本地主机时,我的仪表板出现了,但一切都是空的,我的交叉过滤器和地图。
这是浏览器显示的内容:
【问题讨论】:
-
浏览器控制台有错误吗?
-
@Gordon 为迟到的回复道歉,请参阅我对我的问题所做的编辑。
-
如果没有看到正在运行的应用程序,任何人都很难猜出哪里出了问题。但它确实看起来前端正在期待一个不存在的时间戳字段。我会使用
console.log在浏览器控制台中打印前端接收到的数据,看看它是否具有预期的格式。 -
@Gordon,对不起,在查看了我的 python 之后,我意识到我没有将任何列数据或位置数据传送到我的 java 脚本:/ 让我做一些更正,然后我会编辑我的帖子。
-
没问题,这可能是在提炼问题的过程中会得到解答的问题之一。只是想提供一些提示,以便您自己解决。 :-)
标签: javascript python d3.js heatmap crossfilter