#python #graph
#python #График
Вопрос:
У меня есть следующий код
import numpy as np
#x axis
data = open("spectra.dat","r")
linesColumn = data.readlines()
xaxis = []
for x in linesColumn:
xaxis.append(x.split()[0])
data.close()
#y data
data = open("spectra.dat","r")
linesColumn1 = data.readlines()
firstColumn = []
for x in linesColumn1:
firstColumn.append(x.split()[1])
data.close()
plt.plot(xaxis, firstColumn)
plt.show()
Данные здесь https://drive.google.com/file/d/177kzRGXIoSKvH1fC9XJZubfK3AHzHsFF/view?usp=sharing
Когда я строю график, я получаю линейную функцию, потому что единицы измерения на оси x не масштабируются одинаково. В начале одна единица равна 0,1, а в конце — 5, но она по-прежнему отображается на том же расстоянии по оси x.
Как мне это исправить? Кроме того, есть ли способ оптимизировать разделение столбцов (делая это через цикл или что-то в этом роде) и сохранить каждый столбец в виде одного списка?
Комментарии:
1. Вам необходимо предоставить разрешение на доступ к данным на Google Диске. Найдя max и значение по оси x, мы можем использовать функцию np.arange(). Например, np.arange(0, 5, 0.1): минимальное значение: 0, максимальное значение: 5, размер шага: 0.1, используя эту функцию, мы можем иметь одинаковый размер шага от начальной точки до конца
2. Теперь данные доступны, извините. Это не решает проблему для оси x (np.arange(xaxis)); «Ошибка типа: неподдерживаемые типы операндов для -: ‘list’ и ‘int'».
Ответ №1:
Проблема в том, что xaxis
состоит из str
переменных типа. Преобразуя str
переменную типа в float
, мы можем получить ожидаемую цифру. Код показан ниже:
import numpy as np
from matplotlib import pyplot as plt
#x axis
data = open("spectra.DAT","r")
linesColumn = data.readlines()
xaxis = []
for x in linesColumn:
xaxis.append(float(x.split()[0]))
data.close()
#y data
data = open("spectra.DAT","r")
linesColumn1 = data.readlines()
firstColumn = []
for x in linesColumn1:
firstColumn.append(x.split()[1])
data.close()
plt.plot(xaxis, firstColumn)
plt.show()