首页 > 解决方案 > 图/照片的第二个标题是 CSV 中列的值,但只有最后一个值用于所有照片

问题描述

我有一个脚本,可以制作一张显示底图和地震发生地点的照片。所以1地震,1张照片。每个地块的第二个标题应该是地震的日期。但是,所有照片中仅使用最后一个值,即“2020-04-10”。

from shapely.geometry import Point
from geopandas import GeoDataFrame
import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
import os

os.chdir(r'path')

def plotPoint():
    df = pd.read_csv('earthquakes.csv')
    basemap = gpd.read_file('basemap.shp')
    crs = "epsg:32651"
    geometry = gpd.points_from_xy(df.Longitude, df.Latitude)
    gdf = GeoDataFrame(df, crs=crs, geometry=geometry)
    for d in df['Date'].values:
        date = d
    for i in range(gdf.shape[0]): 
        ax = basemap.plot(figsize=(15,10)) 
        ax.axis('off')
        g = gdf.iloc[i].geometry           
        plt.plot(g.x, g.y, marker='o', color='red', markersize=15)
        title = 'Earthquakes in the ___ from 2008 to 2020'
        dateInfo = str(date)
        plt.suptitle(title)
        plt.title(dateInfo)
        plt.savefig("earthquake_{0}.png".format(i))

plotPoint()

获取“日期”列的值

for i in df['Date'].values:
    print(i)

结果

2020-04-22
2020-04-22
2020-04-21
2020-04-18
2020-04-10

CSV 样本

Latitude,Longitude,Date,Time_UTC,Depth,Depth Type,Magnitude Type,Magnitude,Region Name,Last Update,Eqid,unknown field
13.81,121.1,2020-04-22,03:19:57,10,f,mb,4.5,MINDORO, PHILIPPINES,2020-04-28 23:17,850323
13.76,120.92,2020-04-22,02:36:19,10, , M,4.2,MINDORO, PHILIPPINES,2020-04-22 03:50,850325
10.45,125.2,2020-04-21,21:43:05,10,f,mb,4.7,LEYTE, PHILIPPINES,2020-04-21 22:55,850252
6.69,125.23,2020-04-18,15:22:16,32, , M,3.6,MINDANAO, PHILIPPINES,2020-04-18 15:35,849329
5.65,126.54,2020-04-10,18:45:49,80, ,Mw,5.2,MINDANAO, PHILIPPINES,2020-04-11 06:41,846838

标签: python-3.xpandascsvfor-loopmatplotlib

解决方案


更改了您的代码,您正在使用来自不同 for 循环的日期,这就是为什么它只选择最后一个日期,您也可以使用 Date fromgdf我猜:

# for d in df['Date'].values:
#     date = d
for i in range(gdf.shape[0]): 
    ax = basemap.plot(figsize=(15,10)) 
    ax.axis('off')
    g = gdf.iloc[i].geometry           
    plt.plot(g.x, g.y, marker='o', color='red', markersize=15)
    title = 'Earthquakes in the ___ from 2008 to 2020'
    # Added this line
    date = gdf.iloc[i]['Date']
    dateInfo = str(date)
    plt.suptitle(title)
    # Changed this line
    plt.title(dateInfo)
    plt.savefig("earthquake_{0}.png".format(i))
    plt.show()

推荐阅读