我正在使用APLpy来绘制一个fits文件,并希望在特定的ra,dec值上对fits文件上的标记进行过度绘制。我想要标记的颜色用另一个参数来编码,比方说一个震级。
因此,我从文本文件(positions.dat)读取标记坐标和相应的大小:
ra = np.genfromtxt('positions.dat', dtype=float, comments='%', delimiter=';', missing_values='_', skip_header=1, usecols = (0))
dec = np.genfromtxt('positions.dat', dtype=float, comments='%', delimiter=';', missing_values='_', skip_header=1, usecols = (1))
magnitude = np.genfromtxt('positions.dat', dtype=float, comments='%', delimiter=';', missing_values='_', skip_header=1, usecols = (2)) 我定义了一个颜色映射及其规范化:
cmap1 = mpl.cm.YlOrBr
norm1 = mpl.colors.Normalize(10,20) 为了测试代码,我在positions.dat文件中的大小都在10到20之间。
我试图按以下方式绘制这些标记:
fits1.show_markers(ra,dec, cmap=cmap1, norm=norm1, edgecolor=magnitude, facecolor='none', marker='x', s= 4, linewidths=0.8)当我这样做的时候,我总是会发现错误:
ValueError: Color array must be two-dimensionalpositions.dat文件如下所示:
ra ; dec ; magnitude
330.45 ; -31.958333 ; 10.0
330.46 ; -31.958333 ; 11.0
330.47 ; -31.958333 ; 12.0
330.48 ; -31.958333 ; 13.0
330.49 ; -31.958333 ; 14.0
330.50 ; -31.958333 ; 15.0
330.51 ; -31.958333 ; 16.0
330.52 ; -31.958333 ; 17.0
330.53 ; -31.958333 ; 18.0
330.54 ; -31.958333 ; 19.0
330.55 ; -31.958333 ; 20.0发布于 2014-10-05 09:47:56
问题是matplotlib的散乱不能接受不是颜色数组(即RGB值数组)的edgecolor和facecolor的值。实现您所要做的事情的正确方法是使用分散的c参数,因此在本例中:
fits1.show_markers(ra,dec, cmap=cmap1, norm=norm1,
c=magnitude, facecolor='none',
marker='x', s=4, linewidths=0.8)https://stackoverflow.com/questions/25902162
复制相似问题