Две ошибки, которые я могу обнаружить при чтении вашего кода:
- Объект
gasList
уже является списком, поэтому, когда вы пишете x_coords = [gasList]
, вы создаете список списка, который будет не работает - строка
y_coords=[1,53]
создает список только с 2 значениями: 1 и 53. Когда вы строите график, вам нужно иметь столько же значений y, сколько и значений x, поэтому у вас должно быть 52 значения в этом списке. Вам не нужно писать их все вручную, вы можете использовать функцию 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('1994 Weekly Gas Averages')
# add labels
plt.xlabel('Gas Averages')
plt.ylabel('Week')
# display graph
plt.show()
if __name__ == "__main__":
main()
![enter image description here](https://i.stack.imgur.com/iLMiW.png)