用彩色地图标准化显示标记

用户

我用APLpy绘制一个fits文件,并想在fits文件上以特定的ra,dec值过度绘制标记。我希望标记的颜色用另一个参数来编码,比如一个幅度。在

所以我要做的是从文本文件中读取标记坐标和相应的量值(位置.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))                                   

我定义了一个颜色映射及其规范化:

^{pr2}$

我在位置.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-dimensional

在位置.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


已被浏览了6783次
更新日期: 2020-10-26 05:52:09
1 个回答
fefe Tyson

问题是matplotlib的散点不能为非颜色数组(即RGB值数组)的edgecolorfacecolor取值。正确的方法是使用scatter的c参数,因此在本例中:

fits1.show_markers(ra,dec, cmap=cmap1, norm=norm1,
                   c=magnitude, facecolor='none',
                   marker='x', s=4, linewidths=0.8)
评论 - 2020年9月11日 20:32

最新Python问答

推荐Python问答