0
点赞
收藏
分享

微信扫一扫

matplotlib结合pandas画图

主动源catalog里面的source id和19号文件夹里的文件名有关联,为了画出source分布图写了个脚本

from pathlib import Path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

函数里面输入文件格式如下


def plot_zuobiaopd():
    '''
    得到li文件夹中所有19日sgy文件的坐标分布
    '''
    df = pd.read_csv('./li3.1/porotomo_sweep_all.dat', header = None, delimiter=r'\s+')
    path = Path('./li3.1/')
    sgy_list = []
    index = []
    for folders in path.rglob('*.sgy'):  #指定日期和分量
        sgy_list.append(folders) 
        index.append(folders.name.split('_')[0])
    zuobiao = pd.DataFrame(columns=['name', 'utmeasting', 'utmnorthing'])
#     zuobiao = np.zeros((len(sgy_list), 3))
    for i in range(len(index)):
        name = df.loc[int(index[i])][17]
        east = df.loc[int(index[i])][10]
        north = df.loc[int(index[i])][11]
        zuobiao = zuobiao.append({'name':name, 'utmeasting':east, 'utmnorthing':north}, ignore_index = True)
    
    plt.figure(figsize=(15,10))
    plt.scatter(327961.54-320000, 4407554.94-4407000)
    plt.annotate('well', xy = (327961.54-320000, 4407554.94-4407000), xytext = (327961.54-320000+10, 4407554.94-4407000) )
    for i in range(len(zuobiao)):
        plt.scatter(zuobiao.loc[i][1]-320000, zuobiao.loc[i][2]-4407000, c = 'r', s = 10)
        plt.annotate(zuobiao.loc[i][0], xy = (zuobiao.loc[i][1]-320000, zuobiao.loc[i][2]-4407000), xytext = (zuobiao.loc[i][1]-320000, zuobiao.loc[i][2]-4407000))
    plt.title('PoroTomo_3.19_DASV_source_distribution')
    plt.xlabel('easting(m)')
    plt.ylabel('northing(m)')
    plt.show()
  
    return zuobiao   
    # east north

如图


知识点1:dataframe给定column后,把数据按格式append进去

zuobiao = pd.DataFrame(columns=['name', 'utmeasting', 'utmnorthing'])
#     zuobiao = np.zeros((len(sgy_list), 3))
for i in range(len(index)):
    name = df.loc[int(index[i])][17]
    east = df.loc[int(index[i])][10]
    north = df.loc[int(index[i])][11]
    zuobiao = zuobiao.append({'name':name, 'utmeasting':east, 'utmnorthing':north}, ignore_index = True)

dataframe可以把文字写出来,numpy的话,不能存字符,可以这样写

def plot_zuobiao():
    '''
    得到li文件夹中所有19日sgy文件的坐标分布
    '''
    df = pd.read_csv('./li3.1/porotomo_sweep_all.dat', header = None, delimiter=r'\s+')
    path = Path('./li3.1/')
    sgy_list = []
    index = []
    for folders in path.rglob('*.sgy'):  #指定日期和分量
        sgy_list.append(folders) 
        index.append(folders.name.split('_')[0])
#     zuobiao = pd.DataFrame(columns=['name', 'utmeasting', 'utmnorthing'])
    zuobiao = np.zeros((len(sgy_list), 3))
    for i in range(len(index)):
        zuobiao[i,0] = df.loc[int(index[i])][17][1:]
        zuobiao[i,1] = df.loc[int(index[i])][10]
        zuobiao[i,2] = df.loc[int(index[i])][11]
        
    return zuobiao   
    # east north

举报

相关推荐

0 条评论