Python Matplotlib графики и диаграммы для анализа данных на Python

preview_player
Показать описание
Python и библиотека Matplotlib для научной и технической графики. Пример использования Python и библиотеки Matplotlib для построения графиков с целью анализа данных.

Подробнее на
Портале: PyScientist

Смотрите исходный код в комментариях.

Ссылки на предыдущие видео по теме:
Видео 1: Python настройка рабочего пространства, использование PyCharm
Видео 2: Python функции
Видео 3: Python классы
Видео 4: Графический интерфейс Qt для Python, или PyQt
Видео 5: Python компиляция программ, cx_Freeze и другие компиляторы
Рекомендации по теме
Комментарии
Автор

Спасибо за видос, Сергей! Очень познавательно! Вы, наверно, "пришли" в Пайтон "из другого языка"?)) В питоняке не нужно заранее объявлять названия столбцов и инициализировать их "нулями" (None - читается "нан", не "ноун"). Так что этот блок кода можно спокойно выкинуть. Также не обязательно проверять длину считанных данных (red_data). Убедиться, что переменная непустая можно так: if red_data: ... А создавать объекты файлов рекомендуется с помощью менеджера контекстов, т. е. примерно так: with open(filename, 'r', encoding) as input_file:... В этом случае не приходится беспокоиться о закрытии файла.

vladimirmorozoff
Автор

Здравствуйте, где найти все файлы которые используются в ролике?

yuryak
Автор

Спасибо за урок.
Подскажите такой вопрос: в видео говорится о том как совместить matplotlib и QPainter но само приложение при этом должно быть в формате PY. А можно ли сделать так же но с форматом UI

rombler
Автор

def plot_graph_smart(file_path):

porosity_permeability, porosity_swr, permeability_swr = data_read(file_path)

permeability = []
for element in


porosity_reservoir = []
porosity_non_reservoir = []
for element in
if >= 1:

else:


swr_reservoir = []
swr_non_reservoir = []

for element in
if permeability_swr[0][element] >= 1:

else:



# = (5, 6)

fig, axes = plt.subplots(nrows=3, ncols=3, figsize = (10, 7), dpi=85, facecolor = 'white', frameon = True, edgecolor = 'lightblue', linewidth = 4)
fig.subplots_adjust(wspace = 0.4, hspace = 0.6, left = 0.1, right = 0.95, top = 0.9, bottom=0.1)

axes[0, 0].scatter(porosity_permeability[0], porosity_permeability[1], marker='o', s=10, edgecolor='black', facecolor='blue')
axes[0, 0].grid(True, c='lightgrey', alpha = 0.5)
axes[0, 0].set_title('Permeability = f(Porosity)', fontsize = 10)
axes[0, 0].set_xlabel('Porosity, %', fontsize = 8)
axes[0, 0].set_ylabel('Permeability, mD', fontsize = 8)
axes[0, 0].set_xlim(0, 40)
axes[0, 0].set_ylim(0.001, 10000)
axes[0, 0].set_yscale('log')

axes[0, 0].scatter(10, 1, marker = 'o', facecolor='orange')
graph_legend = ['all_data', 'coutoff point']
axes[0, 0].legend(graph_legend, loc = 'best', fontsize=6)

axes[1, 1].scatter(porosity_swr[0], porosity_swr[1], marker='d', s=2, facecolor='green')
axes[1, 1].grid(True, c='lightgrey', alpha=0.5)
axes[1, 1].set_title('Residual water = f(Porosity)', fontsize=10)
axes[1, 1].set_xlabel('Porosity, %', fontsize=8)
axes[1, 1].set_ylabel('Residual water, %', fontsize=8)
axes[1, 1].set_xlim(0, 40)
axes[1, 1].set_ylim(0, 100)

axes[2, 2].scatter(permeability_swr[0], permeability_swr[1], marker='d', s=2, facecolor='red')
axes[2, 2].grid(True, c='lightgrey', alpha=0.5)
axes[2, 2].set_title('Permeability = f(Residual water)', fontsize=10)
axes[2, 2].set_xlabel('Permeability, mD', fontsize=8)
axes[2, 2].set_ylabel('Residual water, %', fontsize=8)
axes[2, 2].set_xlim(0.001, 10000)
axes[2, 2].set_ylim(0, 100)
axes[2, 2].set_xscale('log')

axes[0, 1].hist(porosity_permeability[0], bins=40, histtype='bar', color='grey')
axes[0, 1].set_title('Porosity histogramm', fontsize = 10)
axes[0, 1].set_xlabel('Porosity, %', fontsize = 8)
axes[0, 1].set_ylabel('Частостота(frequency)', fontsize = 8)
axes[0, 1].set_xlim(0, 40)

axes[2, 1].hist(porosity_swr[1], bins=20, histtype='stepfilled', color='brown')
axes[2, 1].set_title('Residual water histogramm', fontsize = 10)
axes[2, 1].set_xlabel('Residual water, %', fontsize = 8)
axes[2, 1].set_ylabel('Частостота(frequency)', fontsize = 8)
axes[2, 1].set_xlim(0, 100)

axes[1, 2].hist(permeability, bins=20, histtype='step', color='grey')
axes[1, histogramm', fontsize = 10)
axes[1, 2].set_xlabel('Log10(Permeability), mD', fontsize = 8)
axes[1, 2].set_ylabel('Частостота(frequency)', fontsize = 8)
axes[1, 2].set_xlim(-3, 3)

axes[1, 0].hist2d(porosity_swr[0], porosity_swr[1], bins=(20, 20))
axes[1, 0].set_title('D2 hist. Swr-Porosity', fontsize = 10)
axes[1, 0].set_xlabel('Porosity, %', fontsize = 8)
axes[1, 0].set_ylabel('Residual water, %', fontsize = 8)
axes[1, 0].set_xlim(0, 40)
axes[1, 0].set_ylim(0, 100)

axes[0, 2].hist(porosity_reservoir, bins=20, histtype='stepfilled', color='green', cumulative=True)
axes[0, 2].hist(porosity_non_reservoir, bins=20, histtype='stepfilled', color='red', cumulative=-1, alpha = 0.5)
axes[0, 2].set_title('Соопоставление Кп для коллектора и неколлектора', fontsize = 10)
axes[0, 2].set_xlabel('Кп, %', fontsize = 8)
axes[0, 2].set_ylabel('Частостота(frequency)', fontsize = 8)
axes[0, 2].set_xlim(0, 40)

axes[2, 0].hist(swr_reservoir, bins=30, histtype='stepfilled', color='green', cumulative=True)
axes[2, 0].hist(swr_non_reservoir, bins=30, histtype='stepfilled', color='red', cumulative=-1, alpha = 0.5)
axes[2, 0].set_title('Соопоставление Кво для коллектора и неколлектора', fontsize = 10)
axes[2, 0].set_xlabel('Кво, %', fontsize = 8)
axes[2, 0].set_ylabel('Частостота(frequency)', fontsize = 8)
axes[2, 0].set_xlim(0, 100)

plt.show()

PyScientist
Автор

import matplotlib as mpl
import math
from matplotlib import pyplot as plt

def data_read(path_to_data):

porosity_permeability = []
porosity_swr = []
permeability_swr = []

porosity_list = []
permeability_list = []
residual_water_list = []

input_file = open(path_to_data, 'r', encoding='utf-8')
red_data = input_file.readlines()
input_file.close()

if len(red_data) > 0:
for line in range(len(red_data)):
if line == 0:
header = (red_data[line].replace('\n', '')).split('\t')

well_column = None
nlab_column = None
depth_column = None
residual_water_column = None
porosity_column = None
permeability_column = None

for position in range(len(header)):
if header[position] == 'Porosity':
porosity_column = position
if header[position] == 'Permeability':
permeability_column = position
if header[position] == 'Swr':
residual_water_column = position
if line > 0:
data_line = (red_data[line].replace('\n', '')).split('\t')
if len(data_line) == len(header):











return porosity_permeability, porosity_swr, permeability_swr

PyScientist
Автор

Здравствуйте! Я правильно понимаю, что без .txt файла с данными графики не построятся? Благодарю!

nicko
Автор

Доброго дня! Где я могу скачать файл сданными который вы используете для примера?

lyvnwzv
Автор

Здравствуйте, с чем может быть связано то, что питон не понимает «if len(red_data)>0?
Спасибо за ответ

wuyqudz
Автор

Большое спасибо за видео!.
Не могу понять в чем тут дело, вроде бы написано все как у вас

Traceback (most recent call last):
File "C:/Users/Роман/PycharmProjects/python_lessons/first/MyGraphics.py", line 72, in <module>
plot_graph_smart(file_path)
File "C:/Users/Роман/PycharmProjects/python_lessons/first/MyGraphics.py", line 63, in plot_graph_smart

TypeError: must be real number, not str

mr_andersen
Автор

Здравствуйте! Спасибо за видео! На основании видео и информации из интернета хочу построить график, график все строиться но у меня почему то сама зависимость строиться на некотором расстоянии от оси У, а сама ось У начинается не в точке 0.0 стою график через plt.plot(time, tem) где time это значения по оси Х, а tem значения по оси У. Заранее спасибо за ответ!

lyvnwzv
Автор

Здраввтвуйте, подскажите пароль на файлы архивов на вашем сайте((

ptnkbmq
Автор

Половина видео - написание функции чтения из txt o_O

Jingotube
Автор

Писала по Вашему примеру программу, у Вас работает, у меня нет, как так :с

bqfkhzt
Автор

Вот такая ошибка, что достаточно странно, вроде следовал за вами!)
in plot_graph_smart

TypeError: must be real number, not list

alexfirstov