Python. График на mathplotlib
Создал график с помощью библиотеки mathplotlib. График получился ужасно неразборчивый. Нужно сделать нормальный график по координатам. Прикрепляю код:
import matplotlib
import random
import numpy as np
import matplotlib.pyplot as plt
import pmdarima as pm
from pmdarima.model_selection import train_test_split
class Graph():
def __init__(self):
self.y = ""
self.x = ""
#Метод на заполнение x.txt и y.txt
def Fill(self):
n = 144
xlist = []
xa = open("x.txt", "w")
with xa as xlist:
for i in range(n):
xlist.writelines(str(random.randint(10, 99)) + '\n')
xa.close()
ylist = []
ya = open("y.txt", "w")
with ya as ylist:
for i in range(n):
ylist.writelines(str(random.randint(10, 99)) + '\n')
ya.close()
#Метод для вывода графика на экран
def Screen(self):
n = 144
x = np.array([])
with open("x.txt") as xlist:
for line in xlist:
x = np.loadtxt(xlist.readlines(int()))
self.fx = x
y = np.array([])
with open("y.txt") as ylist:
for line in ylist:
y = np.loadtxt(ylist.readlines(int()))
self.fy = y
plt.plot(x, y)
plt.show()
gra = Graph()
gra.Fill()
gra.Screen()
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Вам нужно отсортировать значения x по возрастанию, и сопоставить им соответствующие значений y
import matplotlib
import random
import numpy as np
import matplotlib.pyplot as plt
# моделируем ваш случай
n=144
x = []
y = []
for i in range(n):
x.append(random.randint(10, 99))
for i in range(n):
y.append(random.randint(10, 99))
plt.plot(x, y)
plt.show()
Поскольку у вас все значения выбраны случайным образом и не отсортированы, получается мешанина типа:
Вам нужно просто отсортировать значения по оси абсцисс, но не забыть про соответствующие им значения по оси ординат:
X, Y = zip(*sorted(list(zip(x,y))))
plt.plot(X, Y)
plt.show()
получаем на тех же, но упорядоченных данных:


