如何在世界地图上准确绘制火山与板块边界坐标?
地图绘制错位问题求助:板块边界与火山喷发点的地理可视化
问题描述
我正在做一个学校项目,用Python分析并展示火山喷发数据集,目标是在地图上绘制所有火山喷发点与板块边界,直观展示二者相关性。目前参考教程用matplotlib绘制板块边界坐标,但因为坐标数量多、地图缩放程度和教程不同,出现了坐标与地图错位、Y方向轻微拉伸的问题。
使用的地图图片:
板块边界数据集来自Kaggle的构造板块边界数据集。
现有代码
import matplotlib.pyplot as plt import numpy as np import pandas as pd long = [] lat = [] dtf = open("tp.csv", "r") lines = dtf.readlines() for row in lines[1:]: vals = row.strip().split(",") long.append(vals[2]) lat.append(vals[1]) while("" in long): long.remove("") while("" in lat): lat.remove("") for i in range(0, len(long)): long[i]=float(long[i]) for i in range(0, len(lat)): lat[i]=float(lat[i]) longvu = [] latvu = [] dtf = open("vulkanutbrudd kordinater.csv") lines = dtf.readlines() for row in lines[0:]: vals = row.strip().split(";") longvu.append(vals[1]) latvu.append(vals[0]) while("" in longvu): long.remove("") while("" in latvu): lat.remove("") for i in range(0, len(longvu)): longvu[i]=float(longvu[i]) for i in range(0, len(latvu)): latvu[i]=float(latvu[i]) long.insert(0,-180) long.insert(1,180) lat.insert(0,-90) lat.insert(1,90 ) BBox = [min(long), max(long), min(lat), max(lat)] kart = plt.imread("map.png") fig, ax = plt.subplots(figsize = (8,7)) ax.scatter(long, lat, zorder=1, alpha= 0.2, c='b', s=1) ax.set_xlim(BBox[0],BBox[1]) ax.set_ylim(BBox[2],BBox[3]) ax.set_xlim(-180.00, 180.00) ax.set_ylim(-90.00,90.00) ax.imshow(kart,zorder=0, extent = BBox, aspect= 'auto') plt.show() dtf.close()
补充说明
- "vulkanutbrudd"是挪威语,意为火山喷发,
longvu和latvu是尚未使用的火山喷发坐标。 - 也可使用Python以外的工具解决问题。
内容的提问来源于stack exchange,提问作者Jaknor
相关产品推荐
相关产品推荐

