Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用文本文件中的matplotlib打印圆_Python_File_Matplotlib_Plot_Readfile - Fatal编程技术网

Python 使用文本文件中的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]

我试图使用一个文件作为数据源在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]] 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