У меня есть лист Excel со столбцом кадров изображений. Эти номера кадров распределены неравномерно, т.е. кадр 1 может иметь записи от строки 1 до 20 и кадр 2 от 21 до 25 и так далее. Я хочу прочитать эти данные с листа Excel, который имеет координаты x и y для каждого кадра, и построить эти координаты x и y на разбросанном графике, используя matplotlib. Вот мой код, номера кадров идентифицируются как индекс изображения.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
from matplotlib.pyplot import figure
df_xlsx = pd.read_excel('X10.xlsx')
temp = df_xlsx['Image index'][0]
i = 0; #number of the row
xList = []
yList = []
dt = df_xlsx.loc[df_xlsx['Image index'] == 19]
xList = np.array(dt['X position'])
yList = np.array(dt['Y position'])
rList = np.array(dt['Diameter'])
figure(figsize=(10.24,7.68), dpi=100)
fig, ax = plt.subplots()
plt.xlim([0,1024])
plt.ylim([0,768])
plt.scatter(xList, yList, color ='r')
plt.axis('off')
plt.gcf().set_size_inches((10.24,7.68))
for i in range(len(xList)):
circle1 = plt.Circle((xList[i], yList[i]), rList[i], color='r')
ax.add_artist(circle1)
plt.tight_layout(pad=0)
plt.savefig('f=19.png',dpi=100)
plt.show()
Проблема в том, что каждый раз, когда мне нужно ввести индекс изображения, а затем сохранить график. Можно ли это сделать в цикле, чтобы график постоянно генерировался в виде разных графиков для каждого номера кадра (индексные кадры)? Это сэкономит мне много времени, так как у меня много рамок и листов Excel. Я новичок в Python.
Добро пожаловать в СО. некоторые замечания к вашему коду:
df_xlsx = pd.read_excel('X10.xlsx')
не будет работать, если вы не работаете с очень старой версией pandas. Лучше обновите свои панды до более новой версии. Под лист excel вы имеете в виду файл или фактический лист (лист1, лист2,...)?