使用 Python 从 CSV 绘制像素坐标
Plotting pixel coordinates from CSV using Python
我从图像中提取了像素坐标 (x,y)。为了验证坐标,我试图绘制那些像素坐标。但我做不到。
我尝试使用 turtle 绘图,但我仍然做不到
import turtle
import math
def drawMap():
filename = r"build_coords.csv"
trace = turtle.Turtle()
trace.up()
#scr = Screen()
with open(filename, 'r') as f_input:
for row in f_input:
row = row.strip('()\n').split(',')
x = float(row[0])
y = float(row[1])
trace.goto(x,y)
trace.write(".")
raw_input()
#scr.mainloop()
drawMap()
ValueError: could not convert string to float: '0\t3'
请帮忙解决这个问题。提前致谢
错误消息说您的文本中有一个制表符('\t'-字符),它没有在您的 strip 命令中删除。当您尝试将字符串转换为导致 ValueError 的浮点数时,'\t' 字符仍然存在。
因此,您可以尝试找出为什么输入文件首先包含表格,或者将这些表格连同其他空白字符一起删除。
您的输入逻辑:
x, y = row.strip('()\n').split(',')
似乎暗示输入的形式:
(10, 20)
(30, 40)
这不是 CSV。您的错误消息似乎暗示输入以下形式:
10\t20
30\t40
所以正确回答您的问题的关键是您向我们展示一些样本输入。以下是您的代码的返工:
from turtle import Turtle, Screen
FILENAME = "build_coords.csv"
def drawMap(filename):
trace = Turtle(visible=False)
trace.penup()
with open(filename) as f_input:
header = f_input.readline().rstrip() # "X,Y"
for row in f_input:
x, y = row.rstrip().split(',') # 10,20\n
trace.goto(float(x), float(y))
trace.dot(2)
screen = Screen()
drawMap(FILENAME)
screen.exitonclick()
更新
根据您的意见,我现在假设数据是 CSV 格式并且看起来像:
X,Y
0.0,3.0
0.0,4.0
0.0,5.0
0.0,6.0
0.0,8.0
0.0,10.0
0.0,11.0
0.0,15.0
0.0,16.0
我已经相应地更新了上面的代码。
我从图像中提取了像素坐标 (x,y)。为了验证坐标,我试图绘制那些像素坐标。但我做不到。
我尝试使用 turtle 绘图,但我仍然做不到
import turtle
import math
def drawMap():
filename = r"build_coords.csv"
trace = turtle.Turtle()
trace.up()
#scr = Screen()
with open(filename, 'r') as f_input:
for row in f_input:
row = row.strip('()\n').split(',')
x = float(row[0])
y = float(row[1])
trace.goto(x,y)
trace.write(".")
raw_input()
#scr.mainloop()
drawMap()
ValueError: could not convert string to float: '0\t3'
请帮忙解决这个问题。提前致谢
错误消息说您的文本中有一个制表符('\t'-字符),它没有在您的 strip 命令中删除。当您尝试将字符串转换为导致 ValueError 的浮点数时,'\t' 字符仍然存在。
因此,您可以尝试找出为什么输入文件首先包含表格,或者将这些表格连同其他空白字符一起删除。
您的输入逻辑:
x, y = row.strip('()\n').split(',')
似乎暗示输入的形式:
(10, 20)
(30, 40)
这不是 CSV。您的错误消息似乎暗示输入以下形式:
10\t20
30\t40
所以正确回答您的问题的关键是您向我们展示一些样本输入。以下是您的代码的返工:
from turtle import Turtle, Screen
FILENAME = "build_coords.csv"
def drawMap(filename):
trace = Turtle(visible=False)
trace.penup()
with open(filename) as f_input:
header = f_input.readline().rstrip() # "X,Y"
for row in f_input:
x, y = row.rstrip().split(',') # 10,20\n
trace.goto(float(x), float(y))
trace.dot(2)
screen = Screen()
drawMap(FILENAME)
screen.exitonclick()
更新
根据您的意见,我现在假设数据是 CSV 格式并且看起来像:
X,Y
0.0,3.0
0.0,4.0
0.0,5.0
0.0,6.0
0.0,8.0
0.0,10.0
0.0,11.0
0.0,15.0
0.0,16.0
我已经相应地更新了上面的代码。