У меня есть словарь под названием 'colors', в котором содержатся различные цвета. Эти цвета в моем словаре 'colors' определены как словарь, потому что мне нужно было построить график в основном "красный" против "синий" для разных кластеров цветов. Я построил графики «красный» и «синий» для каждого кластера, но теперь я хочу построить график для всех кластеров на одном графике.
Я продолжаю получать сообщение об ошибке, что я не могу построить словарь. Я понимаю это, но я не знаю, как выбрать значения, которые мне нужны. В этом случае мои цвета - «VMINJ» и «UMINV» на осях x и y соответственно, а мои кластеры названы как «SpARCS-0000» или «SPTCL-0000».
colpath = '/home/jacob/PHOTOMETRY/RESTFRAME_COLOURS/' #This is the path to the restframe colors
goodcolindx = {}
colfiledat = {}
colors = {}
colors['UMINV'] = {}
colors['VMINJ'] = {}
colors['NUVMINV'] = {}
colors['id'] = {}
for iclust in range(len(clustname)): #cycling through all the files depending on cluster
colors['UMINV'][clustname[iclust]] = np.array([])
colors['VMINJ'][clustname[iclust]] = np.array([])
colors['id'][clustname[iclust]] = np.array([])
colors['NUVMINV'][clustname[iclust]] = np.array([])
filepath = catpath + clustname[iclust] + "_totalall_" + extname[iclust] + ".cat"
photdat[clustname[iclust]] = ascii.read(filepath)
filepath = zpath + "compilation_" + clustname[iclust] + ".dat"
zdat[clustname[iclust]] = ascii.read(filepath)
colfilepath = colpath + 'RESTFRAME_MASTER_' + clustname[iclust] + '_indivredshifts.cat'
colfiledat[clustname[iclust]] = ascii.read(colfilepath) #seems to be working thus far.
goodcolindx[clustname[iclust]] = np.where((colfiledat[clustname[iclust]]['REDSHIFTUSED'] > 0.9) & \
(colfiledat[clustname[iclust]]['REDSHIFTUSED'] < 1.5) & \
(photdat[clustname[iclust]]['totmask'] == 0) & \
(photdat[clustname[iclust]]['K_flag'] == 0) & \
((zdat[clustname[iclust]]['quality'] == 3) | (zdat[clustname[iclust]]['quality'] == 4)))
goodcolindx[clustname[iclust]] = goodcolindx[clustname[iclust]][0]
for igood in range(len(goodcolindx[clustname[iclust]])):
idstring = str(photdat[clustname[iclust]]['id'][goodcolindx[clustname[iclust]][igood]])
#Could I use a numpy.where(goodindx=goodcolindx), I could also use an IF statement for that.
colors['NUVMINV'][clustname[iclust]] = np.append(colors['NUVMINV'][clustname[iclust]], -2.5 *
np.log10(colfiledat[clustname[iclust]]['NUV'][goodcolindx[clustname[iclust]][igood]]
/ colfiledat[clustname[iclust]]['V'][goodcolindx[clustname[iclust]][igood]]))
colors['UMINV'][clustname[iclust]] = np.append(colors['UMINV'][clustname[iclust]], colfiledat[clustname[iclust]]['UMINV'][goodcolindx[clustname[iclust]][igood]])
colors['id'][clustname[iclust]] = np.append(colors['id'][clustname[iclust]], photdat[clustname[iclust]]['id'][goodcolindx[clustname[iclust]][igood]])
colors['VMINJ'][clustname[iclust]] = np.append(colors['VMINJ'][clustname[iclust]], colfiledat[clustname[iclust]]['VMINJ'][goodcolindx[clustname[iclust]][igood]])
plt.plot(colors['VMINJ'], colors['UMINV'] , 'ko')
plt.xlim(0.0, 2.0)
plt.ylim(0.0, 2.5)
plt.plot([0, 0.8], [1.3, 1.3], 'k-', lw = 2)
plt.plot([1.6, 1.6], [2.0, 2.5], 'k-', lw = 2)
plt.plot([0.8, 1.6], [1.3, 2.0], 'k-', lw = 2)
plt.title('Restframe color')
plt.xlabel('V-J')
plt.ylabel('U-V')
plt.show()