modify3-04-08
parent
1be2e2f1bc
commit
67d9ee29ac
@ -0,0 +1 @@
|
|||||||
|
main_2.py
|
@ -0,0 +1,220 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>Form</class>
|
||||||
|
<widget class="QWidget" name="Form">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>790</width>
|
||||||
|
<height>757</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="data_file_lineEdit">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>请导入数据文件</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="chose_datafile_button">
|
||||||
|
<property name="text">
|
||||||
|
<string>选择文件</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>levels:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="level_chose">
|
||||||
|
<property name="value">
|
||||||
|
<number>14</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>gWeight:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="gWeight_chose">
|
||||||
|
<property name="value">
|
||||||
|
<number>15</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="legend_color">
|
||||||
|
<property name="text">
|
||||||
|
<string>图例颜色选择</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="colorbar_chose">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>colorbar选择</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="well_file_lineEdit">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>请导入井文件</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="chose_wellfile_button">
|
||||||
|
<property name="text">
|
||||||
|
<string>选择文件</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="chose_oilwell_color">
|
||||||
|
<property name="text">
|
||||||
|
<string>油井颜色选择</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="chose_waterwell_color">
|
||||||
|
<property name="text">
|
||||||
|
<string>水井颜色选择</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_7">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="clear_data">
|
||||||
|
<property name="text">
|
||||||
|
<string>清除数据</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="center_scale">
|
||||||
|
<property name="text">
|
||||||
|
<string>切换比例</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGraphicsView" name="graphicsView"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -0,0 +1,113 @@
|
|||||||
|
112
|
||||||
|
-45.9 -71.2 1009.9 10.384
|
||||||
|
-74.3 135.3 1006.9 65.182
|
||||||
|
4.1 -38.5 1007.9 96.275
|
||||||
|
-6 148.3 1006.9 254.818
|
||||||
|
26.9 -5.9 1005.9 353.900
|
||||||
|
-80.9 -10.8 1006.9 400.117
|
||||||
|
-12.7 -127.7 1006.9 554.83
|
||||||
|
66.9 -31.1 1009.9 837.881
|
||||||
|
-28.1 -39.8 1006.9 1031.90
|
||||||
|
-32.8 20.5 1006.9 1281.306
|
||||||
|
36.5 -25.1 1006.9 1411.553
|
||||||
|
-92.1 13.7 1006.9 1439.940
|
||||||
|
-79.2 105.5 1011.9 1500.433
|
||||||
|
99.7 63.1 1006.9 1542.607
|
||||||
|
-26.3 3.3 1006.9 1549.297
|
||||||
|
-63.1 -0.1 1010.9 1685.309
|
||||||
|
-11.3 4.1 1004.9 1923.693
|
||||||
|
34.6 -51.2 1006.9 2083.725
|
||||||
|
36 69.5 1001.9 2136.755
|
||||||
|
177.9 0.5 1012.9 2311.923
|
||||||
|
-3.7 -5.8 1003.9 2345.193
|
||||||
|
-8.1 -9 1004.9 2497.272
|
||||||
|
-18.1 -5.2 1001.9 2673.628
|
||||||
|
109.9 1.4 1006.9 2687.248
|
||||||
|
137.8 -41.5 1006.9 2729.813
|
||||||
|
44 -0.5 1008.9 2908.834
|
||||||
|
-5.2 -32.3 1006.9 2913.675
|
||||||
|
198.3 60.8 1006.9 3084.214
|
||||||
|
11.1 -91.6 1006.9 3298.919
|
||||||
|
-4.9 4.9 1013.9 3523.955
|
||||||
|
19.6 -35.7 1008.9 3695.617
|
||||||
|
-37.4 -26.9 1008.9 3916.784
|
||||||
|
137.6 -42.9 1008.9 3938.952
|
||||||
|
7.1 -10.1 1006.9 4063.108
|
||||||
|
80.6 -103.8 1006.9 4107.944
|
||||||
|
8.9 -20.9 1006.9 4183.385
|
||||||
|
-44 -6 1007.9 4310.811
|
||||||
|
-50.1 28.4 1009.9 4491.107
|
||||||
|
104 97.2 1001.9 4715.866
|
||||||
|
-60.3 -41.4 1006.9 4772.88
|
||||||
|
61.3 58.9 1006.9 5042.962
|
||||||
|
-121.1 -82.8 1006.9 5181.381
|
||||||
|
31.5 -22.7 1002.9 5373.757
|
||||||
|
-41.9 170 1006.9 5472.766
|
||||||
|
-7.3 5.2 1006.9 5521.58
|
||||||
|
82.8 102.9 1011.9 5636.275
|
||||||
|
154.7 106.1 1011.9 5756.394
|
||||||
|
-37.8 18.5 998.9 5880.473
|
||||||
|
-151.5 -1.2 1005.9 5907.330
|
||||||
|
10.2 4.8 1007.9 6024.836
|
||||||
|
80.3 26.1 1002.9 6050.715
|
||||||
|
-144.7 -101.9 1004.9 6163.211
|
||||||
|
9.1 -57.8 1006.9 6404.898
|
||||||
|
-122.7 -22.3 1011.9 6442.493
|
||||||
|
8 2.4 1007.9 6652.171
|
||||||
|
-182.8 -0.4 1004.9 6935.490
|
||||||
|
25 48.1 1006.9 7113.943
|
||||||
|
-93.6 116.2 1006.9 7237.796
|
||||||
|
-110.2 -14 1006.9 7414.765
|
||||||
|
-101.6 -19.4 1014.9 7642.493
|
||||||
|
-76.8 -12.3 1007.9 7755.607
|
||||||
|
1.6 -26.1 1008.9 7814.322
|
||||||
|
-201.5 1.2 1006.9 7915.129
|
||||||
|
37.5 63.5 1004.9 8003.43
|
||||||
|
21.2 -173.7 1006.9 8089.478
|
||||||
|
-5.5 143.1 1004.9 8316.296
|
||||||
|
-67.6 -52.5 1007.9 8394.665
|
||||||
|
-156.4 15.6 1010.9 8604.577
|
||||||
|
-89.1 31.6 1007.9 8730.251
|
||||||
|
-34.6 -29.8 1006.9 8874.838
|
||||||
|
11.5 -131.3 1008.9 8938.423
|
||||||
|
10.2 4.9 1004.9 8958.814
|
||||||
|
9.2 -46.1 1006.9 9135.222
|
||||||
|
95.2 171 1010.9 9267.394
|
||||||
|
19.3 50.3 1010.9 9344.557
|
||||||
|
127.7 -61.9 1010.9 9574.948
|
||||||
|
7.5 -96.9 1005.9 9668.554
|
||||||
|
6.1 -74.5 1008.9 9855.509
|
||||||
|
-148.6 22.3 1009.9 9903.75
|
||||||
|
39.2 103.1 1010.9 10066.866
|
||||||
|
-80.4 48 1006.9 10208.58
|
||||||
|
157.1 101.1 1006.9 10490.953
|
||||||
|
-92 30.2 1007.9 10499.380
|
||||||
|
111.1 73.2 1009.9 10643.279
|
||||||
|
1.4 -29.7 1006.9 10690.866
|
||||||
|
9.7 -141.4 1007.9 10804.785
|
||||||
|
-0.4 2.5 1003.9 11081.846
|
||||||
|
-8.9 -144.1 1000.9 11233.580
|
||||||
|
-92.8 -26.4 1009.9 11419.149
|
||||||
|
-35.8 38.4 1006.9 11657.103
|
||||||
|
62.8 149.6 1006.9 11853.628
|
||||||
|
40.7 73.8 1009.9 11895.399
|
||||||
|
-38.8 -56.2 1004.9 12158.102
|
||||||
|
69.3 -101.4 1004.9 12196.795
|
||||||
|
-7.4 -4.4 1000.9 12254.790
|
||||||
|
-176.5 -81.9 1001.9 12306.909
|
||||||
|
-34.5 -42.2 1008.9 12375.591
|
||||||
|
-2.5 3.9 1010.9 12391.64
|
||||||
|
-2.5 -1 1008.9 12561.584
|
||||||
|
-128.9 -34.1 1006.9 12669.326
|
||||||
|
83.6 52.6 1001.9 12799.414
|
||||||
|
-48.4 28.4 1005.9 13009.623
|
||||||
|
-55.2 20.7 1002.9 13277.377
|
||||||
|
2 -8.8 1010.9 13432.271
|
||||||
|
-63.7 62.3 1006.9 13496.217
|
||||||
|
29.3 29.6 1007.9 13550.730
|
||||||
|
26 -0.2 1009.9 13572.226
|
||||||
|
108.2 104.8 1006.9 13675.451
|
||||||
|
-34.5 129 1006.9 14009.216
|
||||||
|
113.9 133.5 1006.9 14096.519
|
||||||
|
-32.7 -58.4 1006.9 14356.918
|
||||||
|
1 45.2 1003.9 14454.743
|
@ -0,0 +1,276 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import sys
|
||||||
|
from PySide6.QtWidgets import QApplication, QMainWindow, QGraphicsView, QFileDialog, QColorDialog
|
||||||
|
from PySide6.QtUiTools import QUiLoader
|
||||||
|
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
||||||
|
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
|
||||||
|
from matplotlib.figure import Figure
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from PySide6.QtWidgets import QVBoxLayout
|
||||||
|
import CREAT
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib as mpl
|
||||||
|
from matplotlib.path import Path
|
||||||
|
from matplotlib.patches import Patch
|
||||||
|
from PySide6.QtGui import QPalette
|
||||||
|
import random
|
||||||
|
# plt.legend(prop={'family': 'SimHei', 'size': 15})
|
||||||
|
|
||||||
|
|
||||||
|
class MainWindow(QMainWindow):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.toolbar = None
|
||||||
|
self.canvas = None
|
||||||
|
self.file_paths = []
|
||||||
|
self.get_color = lambda n: list(map(lambda i: "#" + "%06x" % random.randint(0, 0xFFFFFF),range(n)))
|
||||||
|
self.color = self.get_color(100) # 图例颜色选择值
|
||||||
|
self.colorbar = 'jet'
|
||||||
|
self.num = len(self.color) # 记录选择颜色的次数
|
||||||
|
self.oilwell_color = 'k'
|
||||||
|
self.waterwell_color = 'k'
|
||||||
|
self.chose = 0
|
||||||
|
self.num = 0
|
||||||
|
# 加载UI文件
|
||||||
|
self.ui = QUiLoader().load('QT/main_2.ui')
|
||||||
|
self.color_bar()
|
||||||
|
self.ui.legend_color.clicked.connect(self.legend_color_chose) # 选择图例颜色
|
||||||
|
self.ui.colorbar_chose.currentTextChanged.connect(self.update_colorbar) # 更新colorbar
|
||||||
|
self.ui.chose_oilwell_color.clicked.connect(lambda: self.oil_well_color()) # 选择油井颜色
|
||||||
|
self.ui.chose_oilwell_color.clicked.connect(lambda: self.plot_density()) # 更新油井颜色
|
||||||
|
self.ui.chose_waterwell_color.clicked.connect(lambda: self.water_well_color()) # 选择水井颜色
|
||||||
|
self.ui.chose_waterwell_color.clicked.connect(lambda: self.plot_density()) # 更新水井颜色
|
||||||
|
# 更新图窗
|
||||||
|
self.ui.graphicsView.repaint()
|
||||||
|
self.ui.graphicsView.update()
|
||||||
|
self.graphics_layout = QVBoxLayout(self.ui.graphicsView)
|
||||||
|
|
||||||
|
self.ui.chose_datafile_button.clicked.connect(self.choose_datafile)
|
||||||
|
|
||||||
|
self.ui.chose_wellfile_button.clicked.connect(self.choose_wellfile)
|
||||||
|
|
||||||
|
# 绘制或清除数据和画布
|
||||||
|
self.ui.clear_data.clicked.connect(lambda: self.clear_data())
|
||||||
|
|
||||||
|
# 绘图设置中心比例
|
||||||
|
self.ui.center_scale.clicked.connect(lambda: self.center_scale())
|
||||||
|
self.ui.center_scale.clicked.connect(lambda: self.plot_density())
|
||||||
|
self.ui.level_chose.valueChanged.connect(lambda: self.plot_density())
|
||||||
|
self.ui.gWeight_chose.valueChanged.connect(lambda: self.plot_density())
|
||||||
|
|
||||||
|
def self_levels(self):
|
||||||
|
self.levels = self.ui.level_chose.value() # 选择层参数
|
||||||
|
self.plot_density()
|
||||||
|
|
||||||
|
def self_gWeight(self):
|
||||||
|
self.gWeight = self.self.ui.gWeight_chose.value()
|
||||||
|
self.plot_density()
|
||||||
|
|
||||||
|
def scene_fig(self):
|
||||||
|
fig = Figure()
|
||||||
|
# 在Figure对象中添加子图
|
||||||
|
ax = fig.add_subplot(111)
|
||||||
|
return fig, ax
|
||||||
|
|
||||||
|
def canvas_adjust(self, fig):
|
||||||
|
if self.canvas is not None:
|
||||||
|
# 从布局中删除旧的 canvas 和 toolbar
|
||||||
|
item = self.graphics_layout.takeAt(0)
|
||||||
|
while item:
|
||||||
|
widget = item.widget()
|
||||||
|
if widget:
|
||||||
|
widget.setParent(None)
|
||||||
|
item = self.graphics_layout.takeAt(0)
|
||||||
|
self.graphics_layout.removeWidget(self.canvas)
|
||||||
|
self.canvas = FigureCanvas(fig)
|
||||||
|
self.toolbar = NavigationToolbar(self.canvas, self.ui.graphicsView)
|
||||||
|
self.toolbar.setParent(self.canvas)
|
||||||
|
self.graphics_layout.addWidget(self.canvas)
|
||||||
|
self.adjustSize()
|
||||||
|
|
||||||
|
def choose_datafile(self):
|
||||||
|
file_dialog = QFileDialog(self)
|
||||||
|
file_dialog.setFileMode(QFileDialog.ExistingFiles)
|
||||||
|
if file_dialog.exec():
|
||||||
|
self.file_paths += file_dialog.selectedFiles()
|
||||||
|
self.ui.data_file_lineEdit.setText(','.join(self.file_paths))
|
||||||
|
self.plot_density()
|
||||||
|
|
||||||
|
def choose_wellfile(self):
|
||||||
|
file_dialog = QFileDialog(self)
|
||||||
|
file_dialog.setFileMode(QFileDialog.ExistingFiles)
|
||||||
|
if file_dialog.exec():
|
||||||
|
file_paths = file_dialog.selectedFiles()
|
||||||
|
self.ui.well_file_lineEdit.setText(','.join(file_paths))
|
||||||
|
self.plot_density()
|
||||||
|
|
||||||
|
def legend_color_chose(self):
|
||||||
|
col = QColorDialog.getColor()
|
||||||
|
self.color[self.num] = col.name()
|
||||||
|
self.num += 1
|
||||||
|
self.plot_density()
|
||||||
|
|
||||||
|
def oil_well_color(self):
|
||||||
|
col = QColorDialog.getColor()
|
||||||
|
self.oilwell_color = col.name()
|
||||||
|
|
||||||
|
def water_well_color(self):
|
||||||
|
col = QColorDialog.getColor()
|
||||||
|
self.waterwell_color = col.name()
|
||||||
|
|
||||||
|
def color_bar(self):
|
||||||
|
self.ui.colorbar_chose.addItem("jet")
|
||||||
|
self.ui.colorbar_chose.addItem("viridis")
|
||||||
|
self.ui.colorbar_chose.addItem("coolwarm")
|
||||||
|
self.ui.colorbar_chose.addItem('plasma')
|
||||||
|
self.ui.colorbar_chose.addItem("magma")
|
||||||
|
self.ui.colorbar_chose.addItem("inferno")
|
||||||
|
|
||||||
|
def update_colorbar(self):
|
||||||
|
colorbar_name = self.ui.colorbar_chose.currentText()
|
||||||
|
self.colorbar = plt.get_cmap(colorbar_name)
|
||||||
|
self.plot_density()
|
||||||
|
|
||||||
|
def clear_data(self):
|
||||||
|
self.file_paths = []
|
||||||
|
self.color = self.get_color(100)
|
||||||
|
self.num = 0
|
||||||
|
self.ui.data_file_lineEdit.clear()
|
||||||
|
self.ui.well_file_lineEdit.clear()
|
||||||
|
self.canvas.figure.clf() # 清除画布上的内容
|
||||||
|
self.canvas.draw()
|
||||||
|
|
||||||
|
def center_scale(self):
|
||||||
|
if self.chose == 0:
|
||||||
|
self.chose = 1
|
||||||
|
else:
|
||||||
|
self.chose = 0
|
||||||
|
self.num = 0
|
||||||
|
|
||||||
|
def plot_density(self):
|
||||||
|
fig, ax = self.scene_fig()
|
||||||
|
data_name = self.ui.data_file_lineEdit.text().split(',') # 文件输入 =================1
|
||||||
|
level_nums = self.ui.level_chose.value() # 层参数 =================2
|
||||||
|
gWeight = self.ui.gWeight_chose.value() # 权重输入 =================3
|
||||||
|
data = CREAT.create()
|
||||||
|
legend_elements = []
|
||||||
|
if self.num == len(data_name):
|
||||||
|
self.num = 0
|
||||||
|
for i in range(len(data_name)):
|
||||||
|
data.data_pre(data_name[i])
|
||||||
|
data.contours_pre(level_nums, gWeight)
|
||||||
|
|
||||||
|
"""画出密度等高线"""
|
||||||
|
f = data.f
|
||||||
|
x_min, x_max = data.x_range[0], data.x_range[1]
|
||||||
|
y_min, y_max = data.y_range[0], data.y_range[1]
|
||||||
|
levels = data.levels
|
||||||
|
|
||||||
|
xx, yy = np.mgrid[x_min:x_max:200j, y_min:y_max:200j]
|
||||||
|
# 填充等高线图中间的区域
|
||||||
|
|
||||||
|
if len(data_name) > 1:
|
||||||
|
color_i = self.color[i] # """ 自动选择图例的颜色""" =================4
|
||||||
|
level = [levels[0], levels[-1]]
|
||||||
|
ff = ax.contourf(xx, yy, f, levels=level, colors=color_i, alpha=1, zorder=len(data_name) - i)
|
||||||
|
# 生成图例
|
||||||
|
legend_elements.append(Patch(facecolor=color_i, label='第'+f'{i+1}'+'次'))
|
||||||
|
if i == len(data_name)-1:
|
||||||
|
ax.legend(handles=legend_elements, loc='upper right', prop={'family': 'SimHei', 'size': 10})
|
||||||
|
# ax.legend(prop={'family': 'SimHei', 'size': 15})
|
||||||
|
else:
|
||||||
|
# colorbars = 'jet' # 输入选择的colorbar =================5
|
||||||
|
cmap = mpl.colormaps.get_cmap(self.colorbar)
|
||||||
|
colors = cmap(np.linspace(0, 1, level_nums))
|
||||||
|
ff = ax.contourf(xx, yy, f, levels=levels, colors=colors[0:level_nums], alpha=0.5,
|
||||||
|
zorder=len(data_name) - i)
|
||||||
|
# 生成colorbar
|
||||||
|
sm = mpl.cm.ScalarMappable(cmap=cmap, norm=mpl.colors.Normalize(vmin=ff.zmin, vmax=ff.zmax))
|
||||||
|
sm.set_array([])
|
||||||
|
fig.colorbar(sm, ax=ax)
|
||||||
|
|
||||||
|
ax.set_xlabel('X')
|
||||||
|
ax.set_ylabel('Y')
|
||||||
|
ax.set_title('Density Distribution')
|
||||||
|
|
||||||
|
wells_name = self.ui.well_file_lineEdit.text() # 井文件输入 =================6
|
||||||
|
if wells_name == '':
|
||||||
|
self.canvas_adjust(fig)
|
||||||
|
else:
|
||||||
|
wells = CREAT.well_to_edge()
|
||||||
|
wells.wells_name_and_position(wells_name)
|
||||||
|
wells.welltoedge_distance(data.contours)
|
||||||
|
|
||||||
|
"""画井位信息"""
|
||||||
|
typee = wells.type
|
||||||
|
points = wells.position
|
||||||
|
namee = wells.name
|
||||||
|
min_distance = wells.min_distance
|
||||||
|
contours_p = wells.welltoedge_points
|
||||||
|
x_len = ((np.array(points)[:, 0].max()-np.array(points)[:,0].min())//100+2)*100
|
||||||
|
y_len = ((np.array(points)[:, 1].max()-np.array(points)[:,1].min())//100+2)*100
|
||||||
|
if self.chose == 1:
|
||||||
|
max_x = max(np.array([(np.array(points)[:, 0].max()//100+1)*100, (np.array(points)[:, 1].max()//100+1)*100, data.x_range[1], data.y_range[1]]))
|
||||||
|
min_x = max(np.array([(np.array(points)[:, 0].min()//100-1)*100, (np.array(points)[:, 1].min()//100-1)*100, data.x_range[0], data.y_range[0]]))
|
||||||
|
max_x = max(max_x, -min_x)
|
||||||
|
ax.set_xlim([-max_x, max_x])
|
||||||
|
ax.set_ylim([-max_x, max_x])
|
||||||
|
x_len = max(x_len, y_len)
|
||||||
|
y_len = x_len
|
||||||
|
|
||||||
|
for i in range(len(points)):
|
||||||
|
is_inside = False # 标记点是否在等高线内部
|
||||||
|
# path = Path(contours_p)
|
||||||
|
# if path.contains_point(points[i]):
|
||||||
|
if np.linalg.norm(contours_p[i]) >= np.linalg.norm(points[i]):
|
||||||
|
is_inside = True
|
||||||
|
if typee[i][0] == 0:
|
||||||
|
# oil_color = 'black' # 输入油井颜色选择 =================8
|
||||||
|
ax.scatter(points[i][0], points[i][1], marker='o', edgecolors=self.oilwell_color, facecolors='none', s=70)
|
||||||
|
ax.scatter(points[i][0], points[i][1], marker='o', edgecolors=self.oilwell_color, facecolors='none', s=40,
|
||||||
|
linewidths=0.5)
|
||||||
|
ax.scatter(points[i][0], points[i][1], marker='o', edgecolors=self.oilwell_color, facecolors='none', s=20)
|
||||||
|
if wells.angle[i] <= 90:
|
||||||
|
ax.text(points[i][0] - 1/35*x_len, points[i][1] - 1/30*y_len, f'{namee[i][0]}',
|
||||||
|
fontdict={'size': '8', 'color': 'b'}) # 井名信息
|
||||||
|
elif wells.angle[i] > 270:
|
||||||
|
ax.text(points[i][0] + 3/175*x_len, points[i][1] - 1/40*y_len, f'{namee[i][0]}',
|
||||||
|
fontdict={'size': '8', 'color': 'b'}) # 井名信息
|
||||||
|
else:
|
||||||
|
ax.text(points[i][0] - 3/80*x_len, points[i][1] + 3/175*y_len, f'{namee[i][0]}',
|
||||||
|
fontdict={'size': '8', 'color': 'b'}) # 井名信息
|
||||||
|
if not is_inside:
|
||||||
|
# 绘制油井边缘最短距离点的箭头并标出距离
|
||||||
|
ax.quiver(points[i][0], points[i][1], contours_p[i][0] - points[i][0],
|
||||||
|
contours_p[i][1] - points[i][1],
|
||||||
|
angles='xy', scale=1.03,
|
||||||
|
scale_units='xy', width=0.002, zorder=len(data_name) + 1) # 绘制箭头
|
||||||
|
if np.linalg.norm(np.array(points[i])-np.array(contours_p[i])) > 50:
|
||||||
|
ax.text(points[i][0] * 1 / 2 + contours_p[i][0] * 1 / 2 + min_distance[i] / 18,
|
||||||
|
points[i][1] * 1 / 2 + contours_p[i][1] * 1 / 2 - min_distance[i] / 18,
|
||||||
|
f'{round(min_distance[i], 2)}m',
|
||||||
|
fontdict={'size': '8', 'color': 'm'}) # 标出距离
|
||||||
|
else:
|
||||||
|
if wells.angle[i] <= 90:
|
||||||
|
ax.text(points[i][0]-3/70*x_len, points[i][1]+1/40*y_len, f'{round(min_distance[i], 2)}m',
|
||||||
|
fontdict={'size': '8', 'color': 'm'}) # 标出距离
|
||||||
|
elif wells.angle[i] > 270:
|
||||||
|
ax.text(points[i][0] - 1/35*x_len, points[i][1] + 1/30*y_len, f'{round(min_distance[i], 2)}m',
|
||||||
|
fontdict={'size': '8', 'color': 'm'}) # 标出距离
|
||||||
|
else:
|
||||||
|
ax.text(points[i][0] + 3/140*x_len, points[i][1] - 1/40*y_len, f'{round(min_distance[i], 2)}m',
|
||||||
|
fontdict={'size': '8', 'color': 'm'}) # 标出距离
|
||||||
|
else:
|
||||||
|
# water_color = 'black' # 水井颜色 =================9
|
||||||
|
ax.scatter(points[i][0], points[i][1], marker='o', edgecolors=self.waterwell_color, facecolors=self.waterwell_color, s=70, zorder=len(data_name)+1)
|
||||||
|
ax.text(points[i][0] + 15, points[i][1] - 15, f'{namee[i][0]}',
|
||||||
|
fontdict={'size': '8', 'color': 'b'}, zorder=len(data_name) + 2) # 井名信息
|
||||||
|
continue
|
||||||
|
self.canvas_adjust(fig)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app = QApplication([])
|
||||||
|
stats = MainWindow()
|
||||||
|
stats.ui.show()
|
||||||
|
app.exec()
|
Loading…
Reference in New Issue