在这里绘制初学者......
我正在尝试让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和尺寸工作正常,但现在我喜欢它循环。
感谢任何帮助!
答案 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()
答案 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)
我们还为每个颜色添加了不同的颜色,因此您还需要一个颜色列表。