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




[ad_1]

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

Подробнее на
Портале: PyScientist
http://pyscientist.ucoz.net

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

Ссылки на предыдущие видео по теме:
Видео 1: Python настройка рабочего пространства, использование PyCharm
https://youtu.be/lN5B0vkRhww
Видео 2: Python функции
https://youtu.be/ubBH-LBHglY
Видео 3: Python классы
https://youtu.be/vJp9Uo3MJMY
Видео 4: Графический интерфейс Qt для Python, или PyQt
https://youtu.be/btc0bi8m134
Видео 5: Python компиляция программ, cx_Freeze и другие компиляторы
https://youtu.be/Ekc7jcq13ic

Source


[ad_2]

Comment List

  • PyScientist
    November 19, 2020

    Автор, можешь исходники выложить?

  • PyScientist
    November 19, 2020

    Автор молодец, доходчиво все объяснил. Вот ссылка: https://www.youtube.com/watch?v=Qi33KL-Lpfs

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

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

    permeability.append(math.log10(porosity_permeability[1][element]))

    TypeError: must be real number, not list

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

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

    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
    permeability.append(math.log10(porosity_permeability[1][element]))
    TypeError: must be real number, not str

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

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

  • PyScientist
    November 19, 2020

    Большое спасибо за видео!

  • PyScientist
    November 19, 2020

    def plot_graph_smart(file_path):

    porosity_permeability, porosity_swr, permeability_swr = data_read(file_path)

    permeability = []
    for element in range(len(porosity_permeability[1])):
    permeability.append(math.log10(porosity_permeability[1][element]))

    porosity_reservoir = []
    porosity_non_reservoir = []
    for element in range(len(porosity_permeability[1])):
    if porosity_permeability[1][element] >= 1:
    porosity_reservoir.append(porosity_permeability[0][element])
    else:
    porosity_non_reservoir.append(porosity_permeability[0][element])

    swr_reservoir = []
    swr_non_reservoir = []

    for element in range(len(permeability_swr[0])):
    if permeability_swr[0][element] >= 1:
    swr_reservoir.append(permeability_swr[1][element])
    else:
    swr_non_reservoir.append(permeability_swr[1][element])

    # mpl.rcParams['figure.figsize'] = (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, 2].set_title('Log10(Permeability) 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
    November 19, 2020

    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):
    porosity_list.append(float(data_line[porosity_column]))
    permeability_list.append(float(data_line[permeability_column]))
    residual_water_list.append(float(data_line[residual_water_column]))

    porosity_permeability.append(porosity_list)
    porosity_permeability.append(permeability_list)
    porosity_swr.append(porosity_list)
    porosity_swr.append(residual_water_list)
    permeability_swr.append(permeability_list)
    permeability_swr.append(residual_water_list)

    return porosity_permeability, porosity_swr, permeability_swr

Write a comment