Python一键生成井身结构图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python一键生成井身结构图
1.准备如下.CSV文件井眼轨迹数据及固井数据,如水泥返高等。如下图
2.将程序里面的读取路径更改为上述CSV文件存放路径。
3.运行程序,即可生成如下井身结构图。
4.Python代码如下:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import cv2
from PIL import Image, ImageDraw, ImageFont
data = pd.read_csv(r'C:\Users\Administrator\Desktop\2.CSV',encoding='gbk')#编码中文
# 获取“井眼垂深”,“水平位移”,存放于数组
data1 = data['TVD depth'] # 获取名字为TVD depth-列的数据
coordinate_H = data1.values.tolist() # 将csv文件中TVD depth列中的数据保存到列表中
data1 = data['Closure Distance'] # 获取名字为Closure Distance列的数据coordinate_W = data1.values.tolist() # 将csv文件中Closure Distance列中的数据保存到列表中
data1 = data['key_points'] # 获取名字为key_points列的数据
key_points = data1.values.tolist() # 将csv文件中key_points列中的数据保存到列表中
# 平移函数
def pingyi(list, s):
list1 = []
for i in list:
list1.append(i + s)
list = list1
return list
# width = 0.35 # the width of the bars: can also be len(x) sequence
# fig, ax = plt.subplots()
# ax.plot(coordinate_W, coordinate_H, color='tab:blue')
plt.xticks([]) # 去掉x轴
plt.yticks([]) # 去掉y轴
plt.axis('off') # 去掉坐标轴
plt.xlim(-5000, 7000) # 设置X轴范围
plt.ylim(-800, 3500) # 设置Y轴范围
# 设置plt.plot()划线的线条属性
color = (0, 0, 0)
linewidth = 1
linestyle = '-'
#设置文本属性
fontsize = 8
left = 260
right = 0
# 初始化向左或向右平移距离
s = [-420, 420, -300, 300, -210, 210, -140, 140]
# s1 = 350#向左或者向右平移距离
# s2 = -350#向左或者向右平移距离
# s3 = 300#向左或者向右平移距离
# s4 = -300#向左或者向右平移距离
# 自定义井口数据
a = -100 # 井口垂直增加长度
b = 1 # 井口垂直增加长度,起点坐标上移1,避免重复划线
# x0 = [coordinate_W[0],coordinate_W[0]+b]#垂直线
# y0 = [coordinate_H[0],a+b]#垂直线
# plt.plot(x0, y0, color=(0,0,0),linewidth=1, linestyle='-')
# plt.plot(coordinate_W, coordinate_H, color=(0,0,0),linewidth=1, linestyle='-')
h = 0 # 标记一开、二开及三开等下深位置(垂深)
# 中间线
middle_point_x = [coordinate_W[h], coordinate_W[h]]
middle_point_y = [coordinate_H[h] + b - 350, coordinate_H[h] - 40]
plt.plot(middle_point_x, middle_point_y, color='red', linewidth=1,
linestyle='-.')
plt.plot(coordinate_W, coordinate_H, color='red', linewidth=1, linestyle='-.')
#海平面,泥面
#左边
l = -560
r = 560
plt.text(coordinate_W[h]-1150+l, coordinate_H[h]-80,
r'~~~~~',fontsize=8,color='black')
plt.text(coordinate_W[h]-1165+l, coordinate_H[h]-40,
r'~~~~~',fontsize=8,color='black')
plt.text(coordinate_W[h]-1150+l, coordinate_H[h]-0,
r'~~~~~',fontsize=8,color='black')
# plt.text(coordinate_W[h]-1165+l, coordinate_H[h]+40,