python - 绘制故障线而不将每条线连接在一起

标签 python matplotlib matplotlib-basemap

我有两个纬度和经度列表,代表构成地质断层的一堆点。我正在尝试制作一张 map (通过 basemap )将这些断层显示为线条,但是,使用 pyplot.plot 函数,这些点将连接相距数英里的断层,而我不希望这样。

plot showing faults along a map connected by lines 到目前为止,我所做的只是使点变得相当大,这样它们看起来就像是一堆线,但是当我放大时,它显然是点而不是线。

plot showing fault lines as many points, making it look like lines

了解构成单个断层的这些点相距 50 米也可能很有用。最初,我有一个代码,使用大圆工具确定这些点之间的距离,并创建一个新的距离列表:

f_distance = []
c = 0
for i,j in zip(fault_lat,fault_lon):
    while c < (len(fault_lon)-1):
        location1 = (fault_lat[c],fault_lon[c])
        location2 = (fault_lat[c+1],fault_lon[c+1])
        distance = great_circle(location1,location2).meters
        f_distance.append(distance)
        c+=1

然后,如果该距离小于或等于 50,它将绘制它们并(希望)绘制它们之间的线,否则它将跳过它。

c = 0
for i,j,k in zip(map_q_fault_lon,map_q_fault_lat,q_fault_distance):
    if k <= 50:
         map.plot(i,j,linestyle = '-',linewidth = 1.00,color = 'black')
    c+=1

但遗憾的是它只是给了我一个空白屏幕。无论如何,我可以重新设计它,以便它能够满足我的要求吗?

最佳答案

你已经非常接近了,你只需要将当前点和上一个下一个点传递给plot( )。如果您将过滤循环更改为更像

for ii in range(len(map_q_fault_lon)):
    if q_fault_distance[ii] <= 50 and ii > 0:
        map.plot(map_q_fault_lon[ii-1:ii+1], map_q_fault_lat[ii-1:ii+1], 'k-', lw=1.0)

您应该会看到所需的过滤。以下是此方法的结果以及一些生成的数据:

enter image description here

关于python - 绘制故障线而不将每条线连接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349517/

相关文章:

python - 如何在 tkinter Canvas 中嵌入 matplotlib 图形时获得 (3d) 交互性

ubuntu - 在 Ubuntu 上安装 matplotlib vn 1.2 和 Basemap

python - Google App Engine 作为移动应用程序的身份验证服务器

python - Pandas Groupby : Aggregations on the same column but totals based on two different critera/dataframes

matplotlib - plt.show()中的一组关键字 "block"如何默认等于True?

python - Matplotlib 动画在 PyCharm 中不起作用

python - Matplotlib,损坏的图形表示错误

python - 减小 basemap 中使用的标记的大小并获得全屏

python - 在 python 中打开和读取 .abs 数据库文件

python - Pygame 随机移动敌人