【问题标题】:plot data on Geopandas matplotlib在 Geopandas matplotlib 上绘制数据
【发布时间】:2022-01-12 14:12:11
【问题描述】:

我想在 geopandas 图中从 csv 文件中绘制 x 和 y,但只显示图形轴

import fiona
import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.axislines import Subplot
import pandas as pd
gpd.io.file.fiona.drvsupport.supported_drivers['KML'] = 'rw'
gpd.io.file.fiona.drvsupport.supported_drivers["KML"] = "rw"
dfN = pd.read_csv ("nodes.txt",delimiter ="\\s+")
dfN.to_csv ("nodes.csv", index=None)
df = gpd.read_file("data.kml", driver="KML")
df=df.to_crs(epsg=32733)
gdf = gpd.GeoDataFrame(dfN ,geometry=gpd.points_from_xy(dfN.X, dfN.Y))
dg=df.translate(433050,299)
fig,ax = plt.subplots()
ax.set_aspect('equal')
ax.scatter(gdf.X, gdf.Y , zorder=1, alpha= 1, c='r', s=10)
dg.plot(ax=ax,zorder=0,color='white', edgecolor='black',aspect= 'equal')
plt.show()

【问题讨论】:

  • 欢迎来到 SO。请阅读How do I ask a good question?How to create a minimal, complete and verifiable example。也许您的 CSV 文件是空的。也许gpd 在上一步中被覆盖的任何内容。我们不知道。
  • 请注意,您的绘图不仅在绘制 y 轴 - 只是您的 x 轴看起来覆盖了一个非常小的范围,而您的 y 轴的范围从 0 到 1.6e7,并且您使用 @987654327 @ 强制它们以相同的比例绘制,因此 x 轴的宽度大约为 1e-7 x 高度。

标签: python pandas matplotlib geopandas fiona


【解决方案1】:
  • 这不是 MWE,因此从公开可用的数据中获取数据并应用了相同的转换...
  • 绘图代码可以简化,然后就可以了。在包含 POINT 对象的 geopandas 上使用 plot() 会产生散点图
import geopandas as gpd
import matplotlib.pyplot as plt
import pandas as pd
import requests, io

# data sourcing generated two geopandas data frames,  let's replace to make MWE
df = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
df=df.to_crs(epsg=32733)

dg = df.loc[df["geometry"].is_valid *df["iso_a3"].eq("GBR")].translate(433050,299)
dfN = pd.read_csv(io.StringIO(requests.get("https://assets.nhs.uk/data/foi/Hospital.csv").text),
    sep="Č",engine="python",).loc[:,["OrganisationName","Latitude","Longitude"]].rename(columns={"Latitude":"Y","Longitude":"X"})

gdf = gpd.GeoDataFrame(dfN ,geometry=gpd.points_from_xy(dfN.X, dfN.Y))
gdf = gdf.set_crs("EPSG:4326").to_crs(epsg=32733)

# plotting code is simplified as:
ax = dg.plot(zorder=0,color='white', edgecolor='black',aspect= 'equal')
gdf.plot(ax=ax, zorder=1, alpha= 1, c='r', markersize=10)

输出

  • 显然在定义的 CRS 内,加上一组几何图形已被转换

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多