Ich versuche, eine Mollweide-Projektion einer Himmelskarte in Python mit dem Paket matplotlib zu zeichnen. Ich verwende die RA- und Dec-Werte aus einer Datenbank, die alle Sterne in den Katalogen von Hipparcos, Yale Bright Star und Gliese enthält (fast 120.000 Sterne).
Dies ist die Datenbank: https://drive.google.com/file/d/1sJGUxQpnsw93q48I1v8qo6rbDKCeGYOH/view?usp=sharing
Es enthält die Gradwerte von RA und Dec (Spaltennamen sind jeweils ra und dec) sowie die Bogenmaßwerte von RA und Dec (Spaltennamen sind rarad bzw. decrad).
Mein Code unter der Annahme, dass ich die Radiantwerte von Dec und RA verwenden muss, lautet:
figure=plt.figure()
figure.patch.set_facecolor('black') #setting plot background to dark colour
ax = figure.add_subplot(111, projection='mollweide')
plt.scatter(df['decrad'], df['rarad'], s=1, color='red')
plt.show()
figure.savefig("weird.png")
Und das Ausgabediagramm, das ich bekomme, ist:
Meine Frage ist: Warum werden alle Datenpunkte nur innerhalb dieses Kreises und nicht über die gesamte elliptische Oberfläche der Himmelskugel gezeichnet? Liegt es daran, dass ich die falschen Einheiten gewählt habe (Bogenmaß statt Grad) oder soll die Art der Darstellung aufgrund der angegebenen Sterndaten so sein?
Mit Sternen, die sich auf der horizontalen Achse bis zu ±90° erstrecken und in der Nähe dieser Grenzen ziemlich spärlich sind, vermute ich, dass RA und Dec vertauscht sind. Versuchen Sie stattdessen Folgendes:
plt.scatter(df['rarad'], df['decrad'], s=1, color='red')
Wenn Sie möchten, dass das Diagramm dem Nachthimmel ähnelt, filtern Sie die Sternenliste nach scheinbarer Helligkeit und kehren Sie die horizontale Achse um, sodass sie von rechts nach links zunimmt.
ProfRob