私は自分で解決策を見つけるために最善を尽くしましたが、関連するものを見つけていません。.tbl ファイルから抽出されたいくつかの numpy 配列があります (これは、atpy で抽出している天文テーブル形式です)。各配列には約 25,000 個の数値があり、matplotlib を使用してそれらを散布図としてプロットしています。y 軸の値は配列からそのまま取得され、x 軸は 2 つの個別の配列の値の単純な減算です。
これで問題ありませんが、実際に行う必要があるのは、特定の範囲に収まる値を抽出することです (たとえば、y の値が 10 から 13 の間で、x の値が 0 から 1 の間である必要があります)。もちろん、プロットが機能するためには、これらの値がすべて互いに一致する必要があります。これが私が持っているものです:
import numpy as np
from numpy import ndarray
import matplotlib.pyplot as plt
import matplotlib
import atpy
twomass = atpy.Table()
twomass.read('/Raw_Data/IRSA_downloads/2MASS_GCbox1.tbl')
hmag = list([twomass['h_m']])
jmag = list([twomass['j_m']])
colorjh = list([j-h for j,h in zip(jmag, hmag)])
x = []
y = []
def list_maker():
for c,h in zip(colorjh, hmag):
if np.all(c) < 1 == True and np.all(c) > 0 == True and np.all(h) < 13 == True and np.all(h) > 10 == True:
x.append(c)
y.append(h)
list_maker()
plt.scatter(x, y, c='g', s=1, alpha=0.05)
plt.xlabel('Color(J-H)', fontsize=15) #adjust axis labels here
plt.ylabel('Magnitude (H)', fontsize=15)
plt.gca().invert_yaxis()
plt.legend(loc=2)
plt.title('CMD for Galactic Center (2MASS)', fontsize=20)
plt.grid(True)
plt.show()
データをスライスするためにこの方法も試しましたが、うまくいきませんでした:
colorjh = colorjh[colorjh<1]
colorjh = colorjh[colorjh>0]
これらの配列をリストに変換しようとしたり、不等式の書式設定でさまざまなことを試したりするなど、さまざまなことを試しました。その過程で、私は答えから遠ざかったかもしれませんが、このコードは少なくとも散布図全体を出力します (希望どおりにデータを切り分けることができません)。他のいくつかの反復では、私が探している数値範囲のどこにもない空白のプロットが印刷されました。
私はPythonとこのサイトを初めて使用するので、ヒントなどをできるだけ明確にしてください。非常に専門用語が多い場合は、あなたの提案をうまく活用できない可能性があります。みんな、ありがとう。