通过循环在Matplotlib中绘制形状

时间:2017-01-27 10:48:54

标签: python loops matplotlib

在这里绘制初学者......

我正在尝试让Matplotlib在循环中为一个数字添加圆圈,使其运行'N'次。 N由用户输入给出,对于我的应用程序可能不会超过10。

圆的半径和x坐标在先前的函数中生成。我只希望他们躺在一条线上,所以没有y-coords。最后,我将得到一排不同大小的水平圆圈。

我想要一个循环,将每个圆圈添加到一个数字,一些伪代码,我在下面的想法:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

N = input('how many circles: ')

circle_list = []
circle = []

circle_size = [1,2,3]
circle_x = [1,2,3]

for i in range N:
    circle_list[i] = [circle_size[i],circle_x[i]]
    circle[i] = plt.Circle((circle_x[i],0), circle_size[i])
    ax.add_artist(circle[i])

倒数第二行令我感到困惑,我正在努力编写一个取圆圈大小和坐标的命令,并添加plt对象'N'次。我想我可能需要两个循环来运行circle_list但是我不确定。

我已经明确地为3个圆圈编写了这个脚本来测试coords和尺寸工作正常,但现在我喜欢它循环。

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

伪代码已经相当不错了。不需要列表。只需循环到N,每次都将圆圈添加到轴上。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(6,2))
ax.set_aspect("equal")
N = 10

circle_list = []
circle = []

circle_size = np.random.rand(N)/5.+0.1
circle_x = np.arange(N)+1

for i in range(N):
    c = plt.Circle((circle_x[i],0), circle_size[i])
    ax.add_artist(c)

plt.xlim([0,N+1])
plt.ylim([-1,1])

plt.savefig(__file__+".png")    
plt.show()

enter image description here

答案 1 :(得分:0)

我在办公室有一位朋友帮助我,这是我们的解决方案

for i, c in zip(xrange(len(circle_x)), color_lst):
    circle = plt.Circle((circle_x[i], 0), circle_size[i], color=c, alpha=0.9)
    ax.add_artist(circle)

我们还为每个颜色添加了不同的颜色,因此您还需要一个颜色列表。

相关问题