#python #excel #matplotlib #xlrd
Вопрос:
Я пытался построить набор данных excel, однако один набор данных способен строить, а со вторым я получаю сообщение об ошибке.
Мой код:
from matplotlib import pyplot as plt
from xlrd import open_workbook
x_time = list()
y_absorbance = list()
book = open_workbook("SP1.xls")
sheet = book.sheet_by_index(0) #data is on sheet 1
column1 = sheet.col_values(0)
column2 = sheet.col_values(1)
for x in column1:
try:
num = float(x)
time = num/1000000
x_time.append(time)
except:
continue
for y in column2:
try:
num = float(y)
absorbance = num/1000000
y_absorbance.append(absorbance)
except:
continue
plt.plot(x_time, y_absorbance)
plt.title("Final Analysis native R5 Main Pool", fontname="Times New Roman",fontweight="bold", size=20)
plt.xlabel("run time [min]", fontname="Times New Roman")
plt.ylabel("Absorbance [mAU]", fontname="Times New Roman")
plt.legend(("UV-VIS 214 nm",), loc="upper right")
plt.show()
Сообщение об ошибке:
Traceback (most recent call last):
File "/Users/nico/PycharmProjects/Exercise/HPLC_plot.py", line 29, in <module>
plt.plot(x_time, y_absorbance)
File "/Users/nico/PycharmProjects/venv/lib/python3.9/site-packages/matplotlib/pyplot.py", line 2840, in plot
return gca().plot(
File "/Users/nico/PycharmProjects/venv/lib/python3.9/site-packages/matplotlib/axes/_axes.py", line 1743, in plot
lines = [*self._get_lines(*args, data=data, **kwargs)]
File "/Users/nico/PycharmProjects/venv/lib/python3.9/site-packages/matplotlib/axes/_base.py", line 273, in __call__
yield from self._plot_args(this, kwargs)
File "/Users/nico/PycharmProjects/venv/lib/python3.9/site-packages/matplotlib/axes/_base.py", line 399, in _plot_args
raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (13500,) and (13476,)
Данные представляют собой лист Excel и выглядят следующим образом:
https://i.stack.imgur.com/npJDy.png
так вот как должен выглядеть сюжет.
Я не знаю, что я делаю неправильно, так как с первым набором данных это работает, а второй набор данных взят из того же программного обеспечения HPLC, только с другого запуска.
Любые предложения принимаются заранее! 🙂
Комментарии:
1. Использование модуля matplotlib и xlrd
2. Вы должны объединить оба цикла try-except в один.
3. Ооочень большое спасибо!! работает с itertools и объединяет эти два цикла for в один, который дает только одну попытку-кроме блока !!
4. Просто
for x, y in zip(column1, column2):