|
|
import missingno as mno |
|
|
import pandas as pd |
|
|
import streamlit as st |
|
|
import matplotlib.pyplot as plt |
|
|
|
|
|
|
|
|
from plotly.subplots import make_subplots |
|
|
import plotly.graph_objects as go |
|
|
import plotly.figure_factory as ff |
|
|
import plotly.express as px |
|
|
|
|
|
|
|
|
def missing(las_file, well_data): |
|
|
st.title('LAS File Missing Data') |
|
|
|
|
|
if not las_file: |
|
|
st.warning('No file has been uploaded') |
|
|
|
|
|
else: |
|
|
st.write("""The following plot can be used to identify the depth range of each of the logging curves. |
|
|
To zoom in, click and drag on one of the tracks with the left mouse button. |
|
|
To zoom back out double click on the plot.""") |
|
|
|
|
|
data_nan = well_data.notnull().astype('int') |
|
|
|
|
|
curves = [] |
|
|
columns = list(well_data.columns) |
|
|
columns.pop(-1) |
|
|
|
|
|
col1_md, col2_md= st.columns(2) |
|
|
|
|
|
selection = col1_md.radio('Select all data or custom selection', ('All Data', 'Custom Selection')) |
|
|
fill_color_md = col2_md.color_picker('Select Fill Colour', '#9D0000') |
|
|
|
|
|
|
|
|
|
|
|
if selection == 'All Data': |
|
|
curves = columns |
|
|
else: |
|
|
curves = st.multiselect('Select Curves To Plot', columns) |
|
|
|
|
|
if len(curves) <= 1: |
|
|
st.warning('Please select at least 2 curves.') |
|
|
else: |
|
|
curve_index = 1 |
|
|
fig = make_subplots(rows=1, cols= len(curves), subplot_titles=curves, shared_yaxes=True, horizontal_spacing=0.02) |
|
|
|
|
|
for curve in curves: |
|
|
fig.add_trace(go.Scatter(x=data_nan[curve], y=well_data['DEPTH'], |
|
|
fill='tozerox',line=dict(width=0), fillcolor=fill_color_md), row=1, col=curve_index) |
|
|
fig.update_xaxes(range=[0, 1], visible=False) |
|
|
fig.update_xaxes(range=[0, 1], visible=False) |
|
|
curve_index+=1 |
|
|
|
|
|
fig.update_layout(height=1000, showlegend=False, yaxis={'title':'DEPTH','autorange':'reversed'}) |
|
|
|
|
|
for annotation in fig['layout']['annotations']: |
|
|
annotation['textangle']=-90 |
|
|
fig.layout.template='seaborn' |
|
|
st.plotly_chart(fig, use_container_width=True) |