Задать вопрос

Как нарисовать картинку имея координаты точек?

Добрый день, столкнулся с интересной задачей и не знаю как к ней подлезть. Я имею таблицу формата .csv с координатами точек и их цветами.
Выглядит это все примерно так:
x;y;c
13;21;0
32;16;1
34;25;0
15;29;0
11;25;0


x - координата по оси x
y - координата по оси y
с - цвет, 0 - черный 1 - белый или наооборот - разницы нет

С таблицы я вытягиваю все значения, тут все замечательно.

Но я не могу найти библиотеку которая бы ставила точки по координатам и таким образом рисовала рисунок.
Я пытался использовать turtle, но она рисует линии и все превращается в кашу.
Как можно рисовать точки нужного мне цвета и по заданной координате?
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
Maksim_64
@Maksim_64
Data Analyst
Все очень просто, используй matplotlib, pandas и seaborn. Возможности не ограниченные.
сначала читаем это дело в pandas фрейм и затем рисуем scatterplot. Можно их соеденить сделать их разного размера создать любую палитру цветов, да все что угодно
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('data.csv',sep=';')
sns.scatterplot(df, x='x',y='y',hue='c')
plt.show()

Вот простенький пример где data.csv это твои данные. Открывай доки как seaborn так и matplotlib и кастомизируй по своему желанию. Рабочий маленький пример рисования точек по цвету третьей переменной я привел.
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Если хочется turtle, то она позволяет поднимать/опускать перо перед перемещением.
Можно заполнить значениями массив numpy, а потом вывести с помощью matplotlib:
import numpy
import matplotlib.pyplot as plt

with open('data.txt', 'rt') as src:
    src.readline()  # пропускаем заголовок
    points = numpy.array([
        [int(v) for v in row.split(';')] 
        for row in src
    ])
width = points[:, 0].max()
height = points[:, 1].max()
image = numpy.array((height, width), dtype=numpy.uint8)
for x, y, c in points:
    image[y, x] = c

plt.imshow(image, cmap='gray')
plt.show()

Ну или как посоветовали выше, записать данные в SVG.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Можно попробовать сохранить эти точки в SVG-файл. Там формат - простой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы