построение графика данных из текстового файла

Я впервые создаю граф на Python. У меня есть текстовый файл, содержащий данные о «еженедельных средних показателях по газу». Всего их 52 (данные за годы). Я думаю, что я понимаю, как читать данные и составлять их в виде списка, и я могу сделать основы построения графика, если сам составлю точки. Но я не знаю, как соединить их, так как данные в файле по очереди поворачиваются по моей оси X, а затем создаются собственные оси Y (1-52). Мой код - это куча мыслей, которые я медленно собираю. Любая помощь или направление будет удивительным.

    import matplotlib.pyplot as plt

    def main():
        print("Welcome to my program. This program will read data 
    off a file"
  +" called 1994_Weekly_Gas_Averages.txt. It will plot the"
  +" data on a line graph.")
        print()

        gasFile = open("1994_Weekly_Gas_Averages.txt", 'r')

        gasList= []

        gasAveragesPerWeek = gasFile.readline()

        while gasAveragesPerWeek != "":
            gasAveragePerWeek = float(gasAveragesPerWeek)
            gasList.append(gasAveragesPerWeek)
            gasAveragesPerWeek = gasFile.readline()

        index = 0
        while index<len(gasList):
            gasList[index] = gasList[index].rstrip('
')
            index += 1

        print(gasList)

        #create x and y coordinates with data
        x_coords = [gasList]
        y_coords = [1,53]

        #build line graph
        plt.plot(x_coords, y_coords)

        #add title
        plt.title(񟬺 Weekly Gas Averages')

        #add labels
        plt.xlabel('Gas Averages')
        plt.ylabel('Week')

        #display graph
        plt.show()

    main()

Всего 1 ответ


При чтении вашего кода я могу обнаружить две ошибки:

  • Объект gasList уже является списком, поэтому, когда вы пишете x_coords = [gasList] вы создаете список, который не будет работать
  • строка y_coords=[1,53] создает список только с 2 значениями: 1 и 53. Когда вы y_coords=[1,53] график, вам нужно иметь столько же значений y, сколько и значений x, поэтому в этом списке должно быть 52 значения , Вам не нужно писать все вручную, вы можете использовать range(start, stop) функций range(start, stop) чтобы сделать это за вас

Тем не менее, вы, вероятно, получите много, используя функции, которые уже написаны для вас. Например, если вы используете модуль numpy ( import numpy as np ), то вы можете использовать np.loadtxt() чтобы прочитать содержимое файла и создать массив в одну строку. Это будет намного быстрее и менее подвержено ошибкам, чем попытка разбора файлов самостоятельно.

Финальный код:

import matplotlib.pyplot as plt
import numpy as np


def main():
    print(
        "Welcome to my program. This program will read data off a file called 1994_Weekly_Gas_Averages.txt. It will "
        "plot the data on a line graph.")
    print()

    gasFile = "1994_Weekly_Gas_Averages.txt"

    gasList = np.loadtxt(gasFile)
    y_coords = range(1, len(gasList) + 1)  # better not hardcode the length of y_coords, 
                                           # in case there fewer values that expected

    # build line graph
    plt.plot(gasList, y_coords)

    # add title
    plt.title(񟬺 Weekly Gas Averages')

    # add labels
    plt.xlabel('Gas Averages')
    plt.ylabel('Week')

    # display graph
    plt.show()


if __name__ == "__main__":
    main()

введите описание изображения здесь


Есть идеи?

10000