У меня есть следующий код, который считывает данные из 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
Лучший способ запустить этот код Python (matplotlib) для построения и сохранения изображений. ⇐ Python
Программы на Python
1732982157
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}")
Подробнее здесь: [url]https://stackoverflow.com/questions/79239949/better-way-to-run-this-python-matplotlib-code-for-plotting-and-saving-images[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия