matplotloib: как отобразить значения в порядке возрастания, сохранив их индекс?
Есть 2 списка x и y. x идет в порядке возрастания, y- хаотичный. Как отобразить ось y в порядке возрастания, но что бы значения (x,y) не поменялись?
import numpy as np
import matplotlib.pyplot as plt
x=[]
with open('D:\Programming\Contest\stepperf.txt','r') as a:
for line in a:
x.append(line.strip())
x =np.array(x)
y=[]
with open('D:\Programming\Contest\Hall.txt','r') as b:
for line in b:
y.append(line.strip())
y = np.array(y)
fig, ax = plt.subplots(figsize=(8, 6))
plt.grid()
plt.plot(x,y)
plt.show()
Ответы (2 шт):
Автор решения: lev
→ Ссылка
Тут нужно использовать библиотеку numpy, и библиотеку pandas
В библиотеке пандас есть возможность создать data array с индексом для каждой вещи.
Data = numpy.array(['a','b','s'])
S = pandas.Series(Data, index=[101,102,103])
Автор решения: CrazyElf
→ Ссылка
Можно воспользоваться функцией numpy.argsort():
import numpy as np
import matplotlib.pyplot as plt
# x тут по порядку, а y случайные числа
n = 10
x = np.arange(n)
y = np.random.rand(n)
# сортируем индексы (x,y) по значениям y
ind = y.argsort()
fig, ax = plt.subplots(figsize=(8, 6))
plt.grid()
# рисуем в отсортированном порядке
plt.plot(x[ind],y[ind])
plt.show()
