私はD3.JSとFlaskを使って米国の地図を表示しようとしています。地図が表示されていないという問題があります。私は、SVG要素が添付されていること、jsonデータが通過していますが、マップ自体は現れていないことを知っています。私は単純なindex.htmlドキュメントを作成しようとし、そのプロジェクト内にjsonファイルを配置し、Pythonのシンプルなサーバーを使ってマップを見ることができました。今すぐコードのために。ここで起動するにはD3.JSとFlaskの問題 - 米国の地図を取得しようとしています
はJSコードです:
<script type="text/javascript">
//Define default path generator
let path = d3.geo.path();
//Creating the SVG element and attaching it to the page.
let svg = d3.select("#us-map")
.append("svg")
.attr("width", 900)
.attr("height", 700);
//This function will get the data for the map of the U.S
d3.json("/json", function(json){
console.log(json.features) //This shows an array of 52 objects
//Bind data and create one path per GeoJSON feature
svg.selectAll("path")
.data(json.features)
.enter()
.append("path")
.attr("d", path);
});
</script>
Pythonコード:
@app.route("/json")
def json():
data = Data()
data_file = data.convert_json_for_d3()
#return data_file
return data_file.to_json()
私は上記のコードから呼び出すしていたクラスのメソッド:
def convert_json_for_d3(self):
self.__data = pd.read_json('us-states.json')
df = self.__data
return df
HTML:
<section id="us-map">
<h1>UFO Sitings in the U.S.</h1>
</section>
私はこれを1日中作業しています。最初は、D3で動作するjsonデータを取得するのは難しい作業でした。私はその時点でそれを持っていると思った。しかし、私が述べたように、地図は表示されません。 jsonと一緒に単純なindex.htmlファイルに配置するとうまくいきます。だから問題がフラスコかどうか疑問に思っていますか? 1つの最後の点は、私はWebのInteractive Data Visualizationという本のコードに従っています。私はからコードを引っ張ったgithubのレポはこちらです:
object {type: "FeatureCollection", features: Array(52)}
features:Array(52)
0:Object
geometry: Object
coordinates: Array(1)
0: Array (33)
0
1
:
1:Object
:
Data in my Flask Project looks like this:
Object {features: Object, type: Object}
features: Object
0: Object
geometry: Object
coordinates: Array(1)
0: Array (33)
0:Array(2)
1: Object
:
だから、オブジェクトの配列の両方がほぼ同じ-除いて非常にために、次のとおりです。データはこのとして表示され、簡単なHTMLファイルでの作業https://github.com/alignedleft/d3-book/blob/master/chapter_12/01_paths.html
一行目。
ありがとうございました。 (下記のコメントや更新の質問に基づいて)
Andrewが情報をありがとう! Flaskプロジェクトの外に表示することもできます。問題は、私のFlaskプロジェクトに表示されていないことです。私はあなたのコードを貼り付けてみましたが、同じ問題がありました.SVGはそこにあります。データはそこにありますが、マップはありません:(私のコードをHTMLファイルに貼り付けることができます。それはうまく動作しますが、Flaskの問題はまるで私には意味がないようです。私がconsole.logにデータを記録すると、52個のオブジェクトを持つ配列が表示されます。 –
私のプロジェクトと同じ問題であなたのコードを使用しました!( –
投射の問題は一般的にDOMに表示される要素ですが、d3では視覚的に表示されません地理データ) - しかし、これを数分間残しておけば、他の誰かが回答に役立つかどうかを確認することができます。 –