0

私は簡単な演習のために geopandas ライブラリをテストしています: マップ上にいくつかのポイントを表示し、その上に大きな円を重ねて差分メソッドでそれらの一部を削除します。

変換が正常に機能することを確認するために、iPython ノートブックを使用してさまざまなレイヤーを表示しています。

だから、これが私の操作の始まりです:

%matplotlib inline
# this line is just for a correct plotting in an iPython nb
import pandas as pd
import geopandas as gp
from shapely.geometry import Point

df = pd.read_csv("historical_monuments.csv", sep = ",")
geometry = [Point(xy) for xy in zip(fichier.Longitude, fichier.Latitude)]
# I convert two columns of my csv for geographic information displaying
df = df.drop(['Longitude', 'Latitude'], axis = 1)
# just delete two columns of my first df to avoid redundancy
geodf = gp.GeoDataFrame(file, crs=None, geometry=geometry)

次に、私のポイントを確認するために、次のように書きました。

geodf.plot(marker='o', color='red', markersize=5)

結果は次のとおりです。

ここに画像の説明を入力

それはとてもいいです。ここで、このレイヤーに大きな半径のポイントを追加したいだけです。私はこれを試しました:

base = gdf.plot(marker='o', color='red', markersize=5)
# the first plotting becomes a variable to reuse it
center_coord = [Point(6.18, 48.696000)]
center = gp.GeoDataFrame(crs=None, geometry=center_coord)
circle = center.buffer(0.001)

次に、これらのコマンドで十分だと思いました:

circle.plot(ax=base, color = 'white')

しかし、グラフィカルな表示の代わりに、私のノートブックは以下を返します:

<matplotlib.axes._subplots.AxesSubplot at 0x7f763bdde5c0>
<matplotlib.figure.Figure at 0x7f763be5ef60>

そして、これまでのところ何が間違っているのかわかりませんでした...

4

2 に答える 2

2

コマンド

%matplotlib inline

静的プロットを生成します。ノートブックに表示されたら、もう変更することはできません。そのため、シュランプが言ったように、コードを単一のセルに配置する必要があります。

別の方法は、ノートブック バックエンドに切り替えることです。これはインタラクティブで、複数のセルでプロットを変更できます。アクティブにするには、単に使用します

%matplotlib notebook

インラインの代わりに。

于 2016-11-29T11:02:51.793 に答える
1

私の最善の推測は、1つのセル内でコードを実行しなかったことです...奇妙な動作のために、複数のセルで実行するとプロットが表示されません...問題を再現できましたが、コードを1つのセルで実行するとプロットが表示されたセル。

%matplotlib inline
import pandas as pd
import geopandas as gp
import numpy as np
import matplotlib.pyplot as plt
from shapely.geometry import Point

# Create Fake Data
df = pd.DataFrame(np.random.randint(10,20,size=(10, 3)), columns=['Longitude','Latitude','data'])

# create Geometry series with lat / longitude
geometry = [Point(xy) for xy in zip(df.Longitude, df.Latitude)]

df = df.drop(['Longitude', 'Latitude'], axis = 1)

# Create GeoDataFrame
geodf = gp.GeoDataFrame(df, crs=None, geometry=geometry)


# Create Matplotlib figure
fig, ax = plt.subplots()

# Set Axes to equal (otherwise plot looks weird)
ax.set_aspect('equal')


# Plot GeoDataFrame on Axis ax
geodf.plot(ax=ax,marker='o', color='red', markersize=5)
# Create new point
center_coord = [Point(15, 13)]
center = gp.GeoDataFrame(crs=None, geometry=center_coord)
# Plot new point
center.plot(ax=ax,color = 'blue',markersize=5)
# Buffer point and plot it
circle = center.buffer(10)
circle.plot(color = 'white',ax=ax)

最終プロット

ps:ところで、いくつかの変数が混同されています

于 2016-11-26T11:29:46.373 に答える