【发布时间】:2017-05-08 22:03:13
【问题描述】:
我正在尝试对天空中的星系团及其相对大小进行可视化。所以我正在制作每个星系团的点图,然后尝试在每个星系团周围放置一个圆圈。
到目前为止,这是我的代码:
import matplotlib.pyplot as plt
from pylab import *
import csv
with open("/Users/Olly/Documents/FINALVALUES/xPeak.csv", "rU") as x:
reader = csv.reader(x)
list1 = list(reader)
with open("/Users/Olly/Documents/FINALVALUES/yPeak.csv", "rU") as y:
reader = csv.reader(y)
list2 = list(reader)
with open("/Users/Olly/Documents/FINALVALUES/radius.csv", "rU") as r:
reader = csv.reader(r)
list3 = list(reader)
xList = []
yList = []
rList = []
for i in list1:
for j in i:
xList.append(int(j))
for i in list2:
for j in i:
yList.append(int(j))
for i in list3:
for j in i:
rList.append(int(j))
#At this point I have my 3 lists for plotting
plt.figure(1)
plt.rc('text', usetex = True)
plt.rc('font', family = 'serif')
plt.plot(xList, yList, marker = '.', color = 'k', linestyle = 'None')
plt.title('W1 galaxy cluster field')
plt.xlabel(r'$\vartheta$ (arcmins)')
plt.ylabel(r'$\vartheta$ (arcmins)')
for i in range(len(xList))
circle1 = plt.Circle((xList[i], yList[i]), rList[i], color = 'r')
fig, ax = plt.subplots()
ax.add_artist(circle1)
plt.show()
(xList和yList是星系团中心的(x,y)坐标,rList是星系团的半径。)
所以我首先创建我的点图。然后我循环遍历每个数据点,以便我可以为每个数据点设计一个单独的圆圈。
据我所知,编写 'fig, ax' 应该会导致在该循环中创建的圆圈被添加到预定义的图形 (1) 中。所以我不明白为什么每个圆圈都会出现多个情节。
如何修改它,以便为所有 354 个数据点创建一个圆圈并将它们全部放在同一个图表上?
(编辑:这是堆栈上的其他问题所独有的,因为其他问题不涉及导致多个图的循环。这里的问题不是如何绘制一个圆圈 - 就像在其他问题中一样 - 而是如何当代码中需要循环时,绘制许多圆圈。)
【问题讨论】:
标签: python matplotlib plot