#python #arrays #numpy #plot
#python #массивы #numpy #график
Вопрос:
Построил массив, сгенерированный из файлов, разделенных запятыми, и он построил две строки вместо правильной (оранжевой). Если кто-либо может предложить решение или какие-либо предложения, это было бы с благодарностью!
import numpy as np
import matplotlib.pyplot as plt
file = open("com.txt","r")
X, Y = [], []
npy_array = np.loadtxt(file, delimiter=",")
plt.plot(npy_array)
plt.show()
Комментарии:
1. Не могли бы вы, пожалуйста, привести воспроизводимый пример? Поскольку у нас нет доступа к com.txt сложно воссоздать то, что вы видите?
Ответ №1:
Кажется, что вы загрузили табличные данные в 2d-массив. Вам нужно разделить это на независимые и зависимые переменные, а затем сопоставить одну с другой, вместо того, чтобы сопоставлять обе строки с индексом массива. (Очевидно, что линейно возрастающие данные в вашей синей строке предназначены для независимой переменной и должны быть вашими значениями «x» в диапазоне от 0 примерно до 0,2.) Предполагая, что строки файла расположены в порядке x, y, вы должны сделать это — в противном случае поменяйте местами 0 и 1.
# to start with, some lines unchanged from the question
import numpy as np
import matplotlib.pyplot as plt
file = open("com.txt","r")
npy_array = np.loadtxt(file, delimiter=",")
# below here: what you need to change
x = npy_array[:,0]
y = npy_array[:,1]
plt.plot(x, y)
Ответ №2:
matplotlib отображает 2d массивы numpy, предполагая, что каждый столбец представляет собой отдельный набор данных, и каждый из них должен быть нанесен индивидуально
a = [[0,1,2,3], [0,2,3,6]]
np_a = np.array(a)
plt.plot(np_a,'x:')
plt.show()
поскольку линия является прямой, я предполагаю, что вы хотите, чтобы это была ваша ось x. Для этого вам нужно передать ось x в качестве первого периметра, а ось y — во второй
a = [[0,1,2,3], [0,2,3,6]]
np_a = np.array(a)
plt.plot(np_a[0],np_a[1],'x:')
plt.show()