Вы должны взглянуть на pandas. Это делает такие задачи действительно тривиальными. Например: если вы есть .csv
файл с именем data.csv
, который выглядит как этот
x, y
1, 1
2, 4
3, 9
...
, то вы можете построить его следующим образом
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv")
plt.plot(df.x, df.y)
plt.show()
EDIT:
Вы можете транспонировать ваши данные 4x10000 и измените его на 10000x4. Вот пример, показывающий, как строить данные 10000x4 с использованием matplotlib.
4ddata.csv
x,y,z,u
10.39, 73.32, 2.02, 28.26
11.13, 68.71, 1.86, 27.83
12.71, 74.27, 1.89, 28.26
11.46, 91.06, 1.63, 28.26
11.72, 85.38, 1.51, 28.26
13.39, 78.68, 1.89, 28.26
13.02, 68.02, 2.01, 28.26
12.08, 64.37, 2.18, 28.26
11.58, 60.71, 2.28, 28.26
8.94, 65.67, 1.92, 27.04
11.61, 59.57, 2.32, 27.52
19.06, 74.49, 1.69, 63.35
17.52, 73.62, 1.73, 63.51
19.52, 71.52, 1.79, 63.51
18.76, 67.55, 1.86, 63.51
19.84, 53.34, 2.3, 63.51
20.19, 59.82, 1.97, 63.51
17.43, 57.89, 2.05, 63.38
17.9, 59.95, 1.89, 63.51
18.97, 57.84, 2, 63.51
19.22, 57.74, 2.05, 63.51
17.55, 55.66, 1.99, 63.51
19.22, 101.31, 6.76, 94.29
19.41, 99.47, 6.07, 94.15
18.99, 94.01, 7.32, 94.08
19.88, 103.57, 6.98, 94.58
19.08, 95.38, 5.66, 94.14
20.36, 100.43, 6.13, 94.47
20.13, 98.78, 7.37, 94.47
20.36, 89.36, 8.79, 94.71
20.96, 84.48, 8.33, 94.01
21.02, 83.97, 6.78, 94.72
19.6, 95.64, 6.56, 94.57
plot.py
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
df = pd.read_csv("4ddata.csv")
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(df.x, df.y, df.z, s=df.u)
plt.show()
Этот пример представляет собой 4-ое измерение, как (размер точки)
![enter image description here](https://i.stack.imgur.com/5dDCf.png)
Как у Вас есть очень длинный файл, вы можете использовать
ax.scatter(df.x, df.y, df.z, c=df.u)
вместо
ax.scatter(df.x, df.y, df.z, s=df.u)
это будет представлять собой 4-е измерение, поскольку, таким образом, цвет предотвращения излишнего визуальных помех.
![enter image description here](https://i.stack.imgur.com/BJtH9.png)
Проблема в вас случае является то, что при использовании for line in f:
вы читаете всю строку. Таким образом, вы получите что-то вроде
line = "1.23, 4.26, 5.78, 3.44\n"
Python не может понять, как преобразовать эту переменную всплыть и, следовательно, ошибка. Недопустимый литерал здесь, вероятно, ,
. Кроме того, использование цикла для итерации данных в сюжет, вероятно, будет крайне неэффективным, вы должны использовать предоставленные функции там, где это возможно, поскольку они сильно оптимизированы для выполняемой задачи.
Мы понятия не имеем, как вы можете решить эту проблему, если мы не знаем, что вызывает ошибку. Если он найдет то, что не может быть преобразовано в float, например «1.23», оно выдает ошибку. выполните попытку/за исключением поплавка и добавьте строку печати (строка), если инициировано исключение. Скорее всего, окончание линии может быть хорошим местом для начала. Каждая строка по-прежнему будет заканчиваться. –
Это поможет, если вы можете показать часть файла данных, который вы пытаетесь построить. –
Мои данные - это в основном массив данных 4x10000 от DAQ. Большая часть чисел находится в научной нотации. Если я использую функцию линии печати, я могу распечатать данные просто отлично, но я не могу строить данные в пистолете. – estuckey16