Лучший способ запустить этот код Python (matplotlib) для построения и сохранения изображений.Python

Программы на Python
Ответить
Anonymous
 Лучший способ запустить этот код Python (matplotlib) для построения и сохранения изображений.

Сообщение Anonymous »

У меня есть следующий код, который считывает данные из CSV, строит их, а затем сохраняет график в виде изображений. Файл csv содержит значения x и y в индексах столбцов 0 и 1, а также значения RGB для цвета в индексах столбцов с 18 по 21. С помощью этого кода я могу прочитать значения x и y в любой строке и построить их в виде линии. связан с предыдущими значениями x и y определенного цвета. В итоге я получаю серию изображений, на которых мои значения csv x и y отображаются последовательно. Проблема в том, что этот код выполняется очень долго для файлов csv, содержащих около 5000 строк. Для файлов csv, содержащих более 10 000 строк, в моей системе скоро закончится память, и код выйдет из строя. Есть какие-нибудь рекомендации, как это сделать лучше?
import matplotlib.pyplot as plt
import csv
import os

csv_file_path = "my_data.csv"
output_dir = "my_dir"

try:
with open(csv_file_path, 'r') as file:
reader = csv.reader(file)
next(reader) # Skip the header

x = []
y = []
colors = []

# Create the figure and axes only once
fig, ax = plt.subplots(dpi=300)

# Set axis limits and aspect ratio
ax.set_xlim(0, 960*2)
ax.set_ylim(-960*2, 0)
ax.set_aspect('equal', adjustable='box')
ax.axis('off')

for i, row in enumerate(reader):
x.append(float(row[0]))
y.append(-float(row[1])) # y-coordinate needs to be inverted for plotting
rgb = tuple(float(val)/255.0 for val in row[18:21])
colors.append(rgb)

# Plot each line segment with its color
if i > 0: # Start plotting from the second point
ax.plot(x[i-1:i+1], y[i-1:i+1], linewidth=0.5, color=colors[i-1])

# Save the figure
frame_filename = os.path.join(output_dir, f"frame_{i:06d}.png")
plt.savefig(frame_filename, transparent=True, bbox_inches='tight', pad_inches=0)

plt.close(fig) # Close the figure after the loop

print(f"Frames saved in the directory: {output_dir}")

except FileNotFoundError:
print(f"Error: File not found at {file_path}")
except Exception as e:
print(f"An error occurred: {e}")


Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-images
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»