Python 使用文本文件中的matplotlib打印圆
我试图使用一个文件作为数据源在matplotlib中绘制圆,我发现了一些困难 这是我的密码Python 使用文本文件中的matplotlib打印圆,python,file,matplotlib,plot,readfile,Python,File,Matplotlib,Plot,Readfile,我试图使用一个文件作为数据源在matplotlib中绘制圆,我发现了一些困难 这是我的密码 with open('DataSample2.txt', 'r') as file: file.readline() # skip the first line xy = [[float(x) for x in line.split(' ')[:2]] for line in file] rad = [[float(x) for x in line.split(' ')[2:3]
with open('DataSample2.txt', 'r') as file:
file.readline() # skip the first line
xy = [[float(x) for x in line.split(' ')[:2]] for line in file]
rad = [[float(x) for x in line.split(' ')[2:3]] for line in file]
print(xy)
print(rad)
#circle = plt.Circle(xy[0], rad[0], color='g')
#fig = plt.gcf()
#fig.gca().add_artist(circle)
#fig.savefig('plotcircles.png')
这是我的数据来源:
x y rad
2 5 2
2 2 2
3 1 3
5 2 1
6 4 3
我的问题可能是如何创建xy和rad列表。类似这样的东西可能更好:
all_xy = []
all_rad = []
with open('DataSample2.txt', 'r') as file:
file.readline() # skip the first line
for line in file:
vals = line.split()
all_xy.append([float(x) for x in vals[:2]])
all_rad.append(float(vals[-1]))
print(all_xy)
print(all_rad)
我认为你们不需要列表来画圆圈
import matplotlib.pyplot as plt
from numpy.random import rand
with open('DataSample2.txt', 'r') as f:
next(f)
xmin = ymin = 999999999
xmax = ymax = -999999999
for line in f:
x, y, r = map(float, line.split())
circle = plt.Circle((x, y), r, color=rand(3))
fig = plt.gcf()
fig.gca().add_artist(circle)
xmin = min(x-r, xmin)
xmax = max(x+r, xmax)
ymin = min(y-r, ymin)
ymax = max(y+r, ymax)
#break # if you want draw only one circle, break here.
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
plt.show()
谢谢你的回答。然而,对于这个代码,xy和rad在for循环之后只有一个值,这是因为它们更改了文件每一行的值。退出for循环时,它们应该具有最后一行的值。如果需要所有值,则必须存储它们。已编辑。
strip()
不是必需的。无参数删除前导空格和尾随空格。是的,这就是我想要的,只有一个例外。如何更改每个圆的颜色?我可以用“线”索引颜色数组吗?@marco,我在你的代码中没有看到任何颜色列表/数组。定义预定义的颜色并使用zip
或enumerate
对其进行迭代。或者像我在更新的答案中那样使用numpy.random.rand
。