starplot 0.19.6__tar.gz → 0.20.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. {starplot-0.19.6 → starplot-0.20.1}/.gitignore +1 -0
  2. {starplot-0.19.6 → starplot-0.20.1}/CITATION.cff +2 -2
  3. {starplot-0.19.6 → starplot-0.20.1}/Makefile +3 -3
  4. {starplot-0.19.6 → starplot-0.20.1}/PKG-INFO +3 -2
  5. {starplot-0.19.6 → starplot-0.20.1}/README.md +2 -1
  6. {starplot-0.19.6 → starplot-0.20.1}/docs/changelog.md +16 -0
  7. {starplot-0.19.6 → starplot-0.20.1}/docs/coming-soon.md +5 -5
  8. starplot-0.20.1/docs/examples/map-galaxy.md +14 -0
  9. starplot-0.20.1/docs/examples/map-milky-way-stars.md +16 -0
  10. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-virgo-cluster.md +1 -1
  11. {starplot-0.19.6 → starplot-0.20.1}/docs/examples.md +7 -1
  12. {starplot-0.19.6 → starplot-0.20.1}/docs/index.md +3 -1
  13. starplot-0.20.1/docs/reference-collisions.md +63 -0
  14. starplot-0.20.1/docs/reference-galaxyplot.md +18 -0
  15. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-positions.md +1 -0
  16. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/04.md +1 -1
  17. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/06.md +1 -1
  18. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/07.md +1 -1
  19. {starplot-0.19.6 → starplot-0.20.1}/examples/map_big_dipper.py +2 -2
  20. {starplot-0.19.6 → starplot-0.20.1}/examples/map_canis_major.py +1 -1
  21. starplot-0.20.1/examples/map_galaxy.py +65 -0
  22. {starplot-0.19.6 → starplot-0.20.1}/examples/map_milky_way_stars.py +9 -22
  23. {starplot-0.19.6 → starplot-0.20.1}/examples/map_orthographic.py +2 -2
  24. {starplot-0.19.6 → starplot-0.20.1}/examples/map_virgo_cluster.py +1 -1
  25. {starplot-0.19.6 → starplot-0.20.1}/examples/optic_iss_transit.py +3 -4
  26. {starplot-0.19.6 → starplot-0.20.1}/examples/optic_moon_saturn.py +1 -1
  27. {starplot-0.19.6 → starplot-0.20.1}/examples/optic_solar_eclipse.py +1 -1
  28. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/hashio.py +1 -1
  29. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/hashlock.yml +37 -33
  30. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/map_checks.py +26 -6
  31. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/optic_checks.py +5 -6
  32. {starplot-0.19.6 → starplot-0.20.1}/mkdocs.yml +1 -0
  33. {starplot-0.19.6 → starplot-0.20.1}/scripts/voronoi.py +0 -1
  34. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/__init__.py +2 -1
  35. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/coordinates.py +1 -0
  36. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/constellations.py +1 -16
  37. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/db.py +10 -3
  38. starplot-0.20.1/src/starplot/geometry.py +319 -0
  39. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/mixins.py +30 -83
  40. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/comet.py +24 -56
  41. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/moon.py +14 -28
  42. starplot-0.20.1/src/starplot/models/observer.py +125 -0
  43. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/planet.py +13 -31
  44. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/satellite.py +36 -59
  45. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/star.py +17 -7
  46. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/sun.py +9 -21
  47. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plots/__init__.py +1 -0
  48. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plots/base.py +151 -115
  49. starplot-0.20.1/src/starplot/plots/galaxy.py +372 -0
  50. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plots/horizon.py +49 -83
  51. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plots/map.py +15 -5
  52. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plots/optic.py +55 -35
  53. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plots/zenith.py +9 -3
  54. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/constellations.py +45 -77
  55. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/dsos.py +2 -2
  56. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/stars.py +14 -12
  57. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/text.py +254 -4
  58. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/projections.py +6 -0
  59. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/base.py +32 -9
  60. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/antique.yml +10 -8
  61. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/blue_dark.yml +9 -5
  62. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/blue_gold.yml +8 -6
  63. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/blue_light.yml +13 -10
  64. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/blue_medium.yml +5 -4
  65. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/blue_night.yml +16 -7
  66. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/nord.yml +11 -7
  67. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/utils.py +2 -3
  68. {starplot-0.19.6 → starplot-0.20.1}/tests/test_comets.py +24 -9
  69. starplot-0.20.1/tests/test_geometry.py +70 -0
  70. {starplot-0.19.6 → starplot-0.20.1}/tests/test_map.py +4 -6
  71. {starplot-0.19.6 → starplot-0.20.1}/tests/test_models.py +51 -22
  72. {starplot-0.19.6 → starplot-0.20.1}/tests/test_observer.py +6 -0
  73. {starplot-0.19.6 → starplot-0.20.1}/tests/test_satellite.py +13 -10
  74. {starplot-0.19.6 → starplot-0.20.1}/tutorial/tutorial_07.py +6 -6
  75. starplot-0.19.6/docs/examples/map-milky-way-stars.md +0 -15
  76. starplot-0.19.6/docs/reference-collisions.md +0 -18
  77. starplot-0.19.6/src/starplot/geod.py +0 -96
  78. starplot-0.19.6/src/starplot/geometry.py +0 -296
  79. starplot-0.19.6/src/starplot/models/observer.py +0 -80
  80. {starplot-0.19.6 → starplot-0.20.1}/.dockerignore +0 -0
  81. {starplot-0.19.6 → starplot-0.20.1}/.github/FUNDING.yml +0 -0
  82. {starplot-0.19.6 → starplot-0.20.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  83. {starplot-0.19.6 → starplot-0.20.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  84. {starplot-0.19.6 → starplot-0.20.1}/.github/workflows/docs.yml +0 -0
  85. {starplot-0.19.6 → starplot-0.20.1}/.github/workflows/release.yml +0 -0
  86. {starplot-0.19.6 → starplot-0.20.1}/.github/workflows/test.yml +0 -0
  87. {starplot-0.19.6 → starplot-0.20.1}/CODE_OF_CONDUCT.md +0 -0
  88. {starplot-0.19.6 → starplot-0.20.1}/CONTRIBUTING.md +0 -0
  89. {starplot-0.19.6 → starplot-0.20.1}/Dockerfile +0 -0
  90. {starplot-0.19.6 → starplot-0.20.1}/LICENSE +0 -0
  91. {starplot-0.19.6 → starplot-0.20.1}/data/raw/constellation_borders.json +0 -0
  92. {starplot-0.19.6 → starplot-0.20.1}/data/raw/constellations.json +0 -0
  93. {starplot-0.19.6 → starplot-0.20.1}/data/raw/milkyway.json +0 -0
  94. {starplot-0.19.6 → starplot-0.20.1}/data/raw/star_designations.csv +0 -0
  95. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/constellation_names.csv +0 -0
  96. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/dso_names.csv +0 -0
  97. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/en-us/constellation_names.csv +0 -0
  98. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/en-us/dso_names.csv +0 -0
  99. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/en-us/other_terms.csv +0 -0
  100. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/en-us/star_names.csv +0 -0
  101. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/es/constellation_names.csv +0 -0
  102. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/es/dso_names.csv +0 -0
  103. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/es/other_terms.csv +0 -0
  104. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/es/star_names.csv +0 -0
  105. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/fa/constellation_names.csv +0 -0
  106. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/fa/dso_names.csv +0 -0
  107. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/fa/other_terms.csv +0 -0
  108. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/fa/star_names.csv +0 -0
  109. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/fr/constellation_names.csv +0 -0
  110. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/fr/dso_names.csv +0 -0
  111. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/fr/other_terms.csv +0 -0
  112. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/fr/star_names.csv +0 -0
  113. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/lt/constellation_names.csv +0 -0
  114. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/lt/dso_names.csv +0 -0
  115. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/lt/other_terms.csv +0 -0
  116. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/lt/readme.md +0 -0
  117. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/lt/star_names.csv +0 -0
  118. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/other_terms.csv +0 -0
  119. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/readme.md +0 -0
  120. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/star_names.csv +0 -0
  121. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-cn/constellation_names.csv +0 -0
  122. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-cn/dso_names.csv +0 -0
  123. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-cn/other_terms.csv +0 -0
  124. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-cn/star_names.csv +0 -0
  125. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-tw/constellation_names.csv +0 -0
  126. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-tw/dso_names.csv +0 -0
  127. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-tw/other_terms.csv +0 -0
  128. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-tw/readme.md +0 -0
  129. {starplot-0.19.6 → starplot-0.20.1}/data/raw/translations/zh-tw/star_names.csv +0 -0
  130. {starplot-0.19.6 → starplot-0.20.1}/data/readme.md +0 -0
  131. {starplot-0.19.6 → starplot-0.20.1}/data/scripts/constellation_names.py +0 -0
  132. {starplot-0.19.6 → starplot-0.20.1}/data/scripts/data_settings.py +0 -0
  133. {starplot-0.19.6 → starplot-0.20.1}/data/scripts/db.py +0 -0
  134. {starplot-0.19.6 → starplot-0.20.1}/data/scripts/docdata.py +0 -0
  135. {starplot-0.19.6 → starplot-0.20.1}/data/scripts/dso_names.py +0 -0
  136. {starplot-0.19.6 → starplot-0.20.1}/data/scripts/star_designations.py +0 -0
  137. {starplot-0.19.6 → starplot-0.20.1}/data/scripts/translations.py +0 -0
  138. {starplot-0.19.6 → starplot-0.20.1}/docs/about.md +0 -0
  139. {starplot-0.19.6 → starplot-0.20.1}/docs/css/extra.css +0 -0
  140. {starplot-0.19.6 → starplot-0.20.1}/docs/custom/main.html +0 -0
  141. {starplot-0.19.6 → starplot-0.20.1}/docs/data/building.md +0 -0
  142. {starplot-0.19.6 → starplot-0.20.1}/docs/data/constellations.md +0 -0
  143. {starplot-0.19.6 → starplot-0.20.1}/docs/data/dsos.md +0 -0
  144. {starplot-0.19.6 → starplot-0.20.1}/docs/data/overview.md +0 -0
  145. {starplot-0.19.6 → starplot-0.20.1}/docs/data/stars.md +0 -0
  146. {starplot-0.19.6 → starplot-0.20.1}/docs/data-explorer.md +0 -0
  147. {starplot-0.19.6 → starplot-0.20.1}/docs/data-sources.md +0 -0
  148. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/horizon-double-cluster.md +0 -0
  149. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/horizon-gradient.md +0 -0
  150. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/horizon-sgr.md +0 -0
  151. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-big-dipper.md +0 -0
  152. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-big.md +0 -0
  153. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-canis-major.md +0 -0
  154. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-carina-nebula.md +0 -0
  155. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-cassiopeia.md +0 -0
  156. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-custom-marker.md +0 -0
  157. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-orion.md +0 -0
  158. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-orthographic.md +0 -0
  159. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/map-sagittarius.md +0 -0
  160. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/optic-iss-transit.md +0 -0
  161. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/optic-m45.md +0 -0
  162. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/optic-moon-saturn.md +0 -0
  163. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/optic-orion.md +0 -0
  164. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/optic-solar-eclipse.md +0 -0
  165. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/star-chart-basic.md +0 -0
  166. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/star-chart-detail.md +0 -0
  167. {starplot-0.19.6 → starplot-0.20.1}/docs/examples/star-chart-french.md +0 -0
  168. {starplot-0.19.6 → starplot-0.20.1}/docs/images/celestial-globe.svg +0 -0
  169. {starplot-0.19.6 → starplot-0.20.1}/docs/images/cover-front-sm-360.png +0 -0
  170. {starplot-0.19.6 → starplot-0.20.1}/docs/images/discord.svg +0 -0
  171. {starplot-0.19.6 → starplot-0.20.1}/docs/images/examples/.keep +0 -0
  172. {starplot-0.19.6 → starplot-0.20.1}/docs/images/favicon.png +0 -0
  173. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo-2400px.png +0 -0
  174. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo-original/banner.png +0 -0
  175. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo-original/banner.svg +0 -0
  176. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo-original/banner.vectornator +0 -0
  177. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo-original/logo.png +0 -0
  178. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo-original/logo.svg +0 -0
  179. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo-original/logo.vectornator +0 -0
  180. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo-original/logo2.png +0 -0
  181. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo.svg +0 -0
  182. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo2.vectornator +0 -0
  183. {starplot-0.19.6 → starplot-0.20.1}/docs/images/logo500.png +0 -0
  184. {starplot-0.19.6 → starplot-0.20.1}/docs/images/mono-2400px.png +0 -0
  185. {starplot-0.19.6 → starplot-0.20.1}/docs/images/mono.png +0 -0
  186. {starplot-0.19.6 → starplot-0.20.1}/docs/images/mono.svg +0 -0
  187. {starplot-0.19.6 → starplot-0.20.1}/docs/images/star.svg +0 -0
  188. {starplot-0.19.6 → starplot-0.20.1}/docs/images/tutorial/.keep +0 -0
  189. {starplot-0.19.6 → starplot-0.20.1}/docs/installation.md +0 -0
  190. {starplot-0.19.6 → starplot-0.20.1}/docs/license.md +0 -0
  191. {starplot-0.19.6 → starplot-0.20.1}/docs/migration-guides/0.16.0.md +0 -0
  192. {starplot-0.19.6 → starplot-0.20.1}/docs/object-names/constellations.md +0 -0
  193. {starplot-0.19.6 → starplot-0.20.1}/docs/object-names/dsos.md +0 -0
  194. {starplot-0.19.6 → starplot-0.20.1}/docs/object-names/stars.md +0 -0
  195. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-callables.md +0 -0
  196. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-horizonplot.md +0 -0
  197. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-localization.md +0 -0
  198. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-mapplot.md +0 -0
  199. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-models.md +0 -0
  200. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-ongc.md +0 -0
  201. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-opticplot.md +0 -0
  202. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-selecting-objects.md +0 -0
  203. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-settings.md +0 -0
  204. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-styling.md +0 -0
  205. {starplot-0.19.6 → starplot-0.20.1}/docs/reference-zenithplot.md +0 -0
  206. {starplot-0.19.6 → starplot-0.20.1}/docs/robots.txt +0 -0
  207. {starplot-0.19.6 → starplot-0.20.1}/docs/showcase.md +0 -0
  208. {starplot-0.19.6 → starplot-0.20.1}/docs/snippets/_newsletter.html +0 -0
  209. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/01.md +0 -0
  210. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/02.md +0 -0
  211. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/03.md +0 -0
  212. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/05.md +0 -0
  213. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/08.md +0 -0
  214. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial/09.md +0 -0
  215. {starplot-0.19.6 → starplot-0.20.1}/docs/tutorial.md +0 -0
  216. {starplot-0.19.6 → starplot-0.20.1}/examples/examples.py +0 -0
  217. {starplot-0.19.6 → starplot-0.20.1}/examples/galaxy_custom_marker.py +0 -0
  218. {starplot-0.19.6 → starplot-0.20.1}/examples/horizon_double_cluster.py +0 -0
  219. {starplot-0.19.6 → starplot-0.20.1}/examples/horizon_gradient.py +0 -0
  220. {starplot-0.19.6 → starplot-0.20.1}/examples/horizon_sgr.py +0 -0
  221. {starplot-0.19.6 → starplot-0.20.1}/examples/map_big.py +0 -0
  222. {starplot-0.19.6 → starplot-0.20.1}/examples/map_carina.py +0 -0
  223. {starplot-0.19.6 → starplot-0.20.1}/examples/map_cas.py +0 -0
  224. {starplot-0.19.6 → starplot-0.20.1}/examples/map_orion.py +0 -0
  225. {starplot-0.19.6 → starplot-0.20.1}/examples/map_sagittarius.py +0 -0
  226. {starplot-0.19.6 → starplot-0.20.1}/examples/optic_m45.py +0 -0
  227. {starplot-0.19.6 → starplot-0.20.1}/examples/optic_orion_nebula.py +0 -0
  228. {starplot-0.19.6 → starplot-0.20.1}/examples/star_chart_basic.py +0 -0
  229. {starplot-0.19.6 → starplot-0.20.1}/examples/star_chart_detail.py +0 -0
  230. {starplot-0.19.6 → starplot-0.20.1}/examples/star_chart_french.py +0 -0
  231. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/__init__.py +0 -0
  232. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/data/.keep +0 -0
  233. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/horizon_checks.py +0 -0
  234. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/template.html +0 -0
  235. {starplot-0.19.6 → starplot-0.20.1}/hash_checks/zenith_checks.py +0 -0
  236. {starplot-0.19.6 → starplot-0.20.1}/pyproject.toml +0 -0
  237. {starplot-0.19.6 → starplot-0.20.1}/requirements-dev.txt +0 -0
  238. {starplot-0.19.6 → starplot-0.20.1}/requirements.txt +0 -0
  239. {starplot-0.19.6 → starplot-0.20.1}/scripts/ecliptic.py +0 -0
  240. {starplot-0.19.6 → starplot-0.20.1}/scripts/marimo.py +0 -0
  241. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/callables.py +0 -0
  242. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/cli.py +0 -0
  243. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/config.py +0 -0
  244. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/__init__.py +0 -0
  245. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/catalogs.py +0 -0
  246. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/dsos.py +0 -0
  247. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/ecliptic.py +0 -0
  248. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/library/constellation_names.parquet +0 -0
  249. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/library/dso_names.parquet +0 -0
  250. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/library/readme.md +0 -0
  251. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/library/star_designations.parquet +0 -0
  252. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/stars.py +0 -0
  253. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/translations.py +0 -0
  254. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/data/utils.py +0 -0
  255. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/__init__.py +0 -0
  256. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/base.py +0 -0
  257. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/constellation.py +0 -0
  258. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/dso.py +0 -0
  259. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/milky_way.py +0 -0
  260. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/objects.py +0 -0
  261. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/models/optics.py +0 -0
  262. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/__init__.py +0 -0
  263. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/arrow.py +0 -0
  264. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/debug.py +0 -0
  265. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/experimental.py +0 -0
  266. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/gradients.py +0 -0
  267. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/legend.py +0 -0
  268. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/plotters/milkyway.py +0 -0
  269. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/profile.py +0 -0
  270. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/__init__.py +0 -0
  271. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/cb_wong.yml +0 -0
  272. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/color_print.yml +0 -0
  273. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/gradient_presets.yml +0 -0
  274. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/grayscale.yml +0 -0
  275. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/grayscale_dark.yml +0 -0
  276. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/map.yml +0 -0
  277. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/optic.yml +0 -0
  278. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/ext/publication.yml +0 -0
  279. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/extensions.py +0 -0
  280. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/gfs-didot/DESCRIPTION.en_us.html +0 -0
  281. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/gfs-didot/GFSDidot-Regular.ttf +0 -0
  282. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/gfs-didot/METADATA.pb +0 -0
  283. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/gfs-didot/OFL.txt +0 -0
  284. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-Bold.ttf +0 -0
  285. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-BoldItalic.ttf +0 -0
  286. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-ExtraBold.ttf +0 -0
  287. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-ExtraLight.ttf +0 -0
  288. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-ExtraLightItalic.ttf +0 -0
  289. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-Italic.ttf +0 -0
  290. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-Light.ttf +0 -0
  291. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-LightItalic.ttf +0 -0
  292. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-Regular.ttf +0 -0
  293. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-SemiBold.ttf +0 -0
  294. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/Inter-SemiBoldItalic.ttf +0 -0
  295. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts-library/inter/LICENSE.txt +0 -0
  296. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/fonts.py +0 -0
  297. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/helpers.py +0 -0
  298. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/styles/markers.py +0 -0
  299. {starplot-0.19.6 → starplot-0.20.1}/src/starplot/warnings.py +0 -0
  300. {starplot-0.19.6 → starplot-0.20.1}/tests/__init__.py +0 -0
  301. {starplot-0.19.6 → starplot-0.20.1}/tests/data/.keep +0 -0
  302. {starplot-0.19.6 → starplot-0.20.1}/tests/data/comets.txt +0 -0
  303. {starplot-0.19.6 → starplot-0.20.1}/tests/test_catalogs.py +0 -0
  304. {starplot-0.19.6 → starplot-0.20.1}/tests/test_data.py +0 -0
  305. {starplot-0.19.6 → starplot-0.20.1}/tests/test_languages.py +0 -0
  306. {starplot-0.19.6 → starplot-0.20.1}/tests/test_optic.py +0 -0
  307. {starplot-0.19.6 → starplot-0.20.1}/tests/test_settings.py +0 -0
  308. {starplot-0.19.6 → starplot-0.20.1}/tests/test_stars.py +0 -0
  309. {starplot-0.19.6 → starplot-0.20.1}/tests/test_styles.py +0 -0
  310. {starplot-0.19.6 → starplot-0.20.1}/tests/test_utils.py +0 -0
  311. {starplot-0.19.6 → starplot-0.20.1}/tests/utils.py +0 -0
  312. {starplot-0.19.6 → starplot-0.20.1}/tutorial/build.py +0 -0
  313. {starplot-0.19.6 → starplot-0.20.1}/tutorial/tutorial_02.py +0 -0
  314. {starplot-0.19.6 → starplot-0.20.1}/tutorial/tutorial_03.py +0 -0
  315. {starplot-0.19.6 → starplot-0.20.1}/tutorial/tutorial_04.py +0 -0
  316. {starplot-0.19.6 → starplot-0.20.1}/tutorial/tutorial_05.py +0 -0
  317. {starplot-0.19.6 → starplot-0.20.1}/tutorial/tutorial_06.py +0 -0
  318. {starplot-0.19.6 → starplot-0.20.1}/tutorial/tutorial_08.py +0 -0
@@ -29,6 +29,7 @@ bigsky*.parquet
29
29
  hash_checks/data/*.png
30
30
  hash_checks/results.html
31
31
 
32
+ .tmp/
32
33
  temp*
33
34
  temp.py
34
35
  temp/
@@ -20,5 +20,5 @@ keywords:
20
20
  - graphs
21
21
  - plotting
22
22
  license: MIT
23
- version: 0.19.6
24
- date-released: '2026-02-15'
23
+ version: 0.20.1
24
+ date-released: '2026-03-10'
@@ -35,7 +35,7 @@ format:
35
35
  $(DOCKER_RUN) "python -m black src/ tests/ scripts/ examples/ hash_checks/ tutorial/ data/ $(ARGS)"
36
36
 
37
37
  test:
38
- $(DOCKER_RUN) "python -m pytest --cov=src/ --cov-report=term --cov-report=html ."
38
+ $(DOCKER_RUN) "python -m pytest $(ARGS) --cov=src/ --cov-report=term --cov-report=html ."
39
39
 
40
40
  check-hashes:
41
41
  $(DOCKER_RUN) "python hash_checks/hashio.py check"
@@ -65,10 +65,10 @@ examples:
65
65
  tutorial:
66
66
  $(DOCKER_RUN) "cd tutorial && python build.py"
67
67
 
68
- profile: DR_ARGS=-it -p 8080:8080
68
+ profile: DR_ARGS=-it -p 8081:8081
69
69
  profile:
70
70
  $(DOCKER_RUN) "python -m cProfile -o temp/results.prof scripts/scratchpad.py && \
71
- snakeviz -s -p 8080 -H 0.0.0.0 temp/results.prof"
71
+ snakeviz -s -p 8081 -H 0.0.0.0 temp/results.prof"
72
72
 
73
73
  # builds ALL data files and then database:
74
74
  db:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: starplot
3
- Version: 0.19.6
3
+ Version: 0.20.1
4
4
  Summary: Star charts and maps of the sky
5
5
  Keywords: astronomy,stars,charts,maps,constellations,sky,plotting
6
6
  Author-email: Steve Berardi <hello@steveberardi.com>
@@ -45,8 +45,9 @@ Project-URL: Source, https://github.com/steveberardi/starplot
45
45
 
46
46
  - 🗺️ **Maps** - including 10+ customizable projections
47
47
  - ⭐ **Zenith Charts** - shows the entire sky at a specific time and place
48
- - 🌃 **Horizon Charts** - shows the horizon at a specific time and place
48
+ - 🌅 **Horizon Charts** - shows the horizon at a specific time and place
49
49
  - 🔭 **Optic Simulations** - shows what you'll see through an optic (e.g. telescope) at a specific time and place
50
+ - 🌌 **Galactic Charts** - shows a Mollweide projection in galactic coordinates
50
51
  - 🪐 **Planets and Deep Sky Objects (DSOs)** - with support for plotting their true extent
51
52
  - ☄️ **Comets and Satellites** - easy trajectory plotting
52
53
  - 🎨 **Custom Styles** - for all objects and with 8+ built-in themes
@@ -8,8 +8,9 @@
8
8
 
9
9
  - 🗺️ **Maps** - including 10+ customizable projections
10
10
  - ⭐ **Zenith Charts** - shows the entire sky at a specific time and place
11
- - 🌃 **Horizon Charts** - shows the horizon at a specific time and place
11
+ - 🌅 **Horizon Charts** - shows the horizon at a specific time and place
12
12
  - 🔭 **Optic Simulations** - shows what you'll see through an optic (e.g. telescope) at a specific time and place
13
+ - 🌌 **Galactic Charts** - shows a Mollweide projection in galactic coordinates
13
14
  - 🪐 **Planets and Deep Sky Objects (DSOs)** - with support for plotting their true extent
14
15
  - ☄️ **Comets and Satellites** - easy trajectory plotting
15
16
  - 🎨 **Custom Styles** - for all objects and with 8+ built-in themes
@@ -1,4 +1,20 @@
1
+ ## v0.20.x
2
+
3
+ - Adds a `GalaxyPlot` for plotting in galactic coordinates
4
+ - Adds label support to lines with automatic angle adjustment
5
+ - Plots the Moon's precise phase / illumination when `show_phase=True`
6
+ - Separate collision handlers for points, areas, and paths
7
+ - Refactored some models to expect an observer instance instead of lat/lon/dt
8
+ - Adds the PlateCarree projection
9
+ - Adds effect of atmospheric refraction to horizon and optic plots
10
+ - Fixes a bug with calculating apparent positions of solar system objects in horizon/optic plots
11
+ - [**v0.20.1**]
12
+ - Optimizes coordinate conversions
13
+ - Makes constellation lines straight
14
+
15
+
1
16
  ## v0.19.x
17
+ [Documentation](https://archives.starplot.dev/0.19.6/)
2
18
 
3
19
  - Adds a `CollisionHandler` for defining what to do when labels collide with something
4
20
  - Introduces catalogs for the Milky Way and constellation borders
@@ -1,16 +1,17 @@
1
1
  <table class="table-coming-soon">
2
2
  <tr>
3
- <td>v0.20</td>
3
+ <td>v0.21</td>
4
4
  <td>
5
5
  <h4>⭐ Next Release ⭐</h4>
6
6
  <ul>
7
- <li>Support for more coordinate systems</li>
7
+ <li>Plot definition files</li>
8
+ <li>CLI for creating plots</li>
8
9
  </ul>
9
10
  </td>
10
11
  <td></td>
11
12
  </tr>
12
13
  <tr>
13
- <td>v0.21</td>
14
+ <td>v0.22</td>
14
15
  <td>
15
16
  <ul>
16
17
  <li>TBD</li>
@@ -19,12 +20,11 @@
19
20
  <td></td>
20
21
  </tr>
21
22
  <tr>
22
- <td>v0.22+</td>
23
+ <td>v0.23+</td>
23
24
  <td>
24
25
  <ul>
25
26
  <li>Planet moons</li>
26
27
  <li>Area-based labeling</li>
27
- <li>Improved line labeling</li>
28
28
  <li>Optimized vector graphics backend</li>
29
29
  </ul>
30
30
  </td>
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: Galaxy Plot
3
+ ---
4
+ [:octicons-arrow-left-24: Back to Examples](/examples)
5
+
6
+ # Galaxy Plot {.example-header}
7
+
8
+ ![map-galaxy](/images/examples/map_galaxy.png)
9
+
10
+ ```python
11
+ --8<-- "examples/map_galaxy.py"
12
+ ```
13
+
14
+
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: The Milky Way
3
+ ---
4
+ [:octicons-arrow-left-24: Back to Examples](/examples)
5
+
6
+ # The Milky Way {.example-header}
7
+
8
+ ![map-milky-way-stars](/images/examples/map_milky_way_stars.png)
9
+
10
+ In this example, we first plot all stars with a limiting magnitude of 11, which clearly shows the Milky Way. And then we use [Pillow](https://pillow.readthedocs.io/en/latest/index.html) to apply a median filter, which helps make the Milky Way stand out more in the image.
11
+
12
+ ```python
13
+ --8<-- "examples/map_milky_way_stars.py"
14
+ ```
15
+
16
+
@@ -7,7 +7,7 @@ title: Map of the Virgo Galaxy Cluster
7
7
 
8
8
  ![map-virgo-galaxy-cluster](/images/examples/map_virgo_cluster.png)
9
9
 
10
- In this example, we create a custom [CollisionHandler](/reference-collisions/) to ensure _all_ labels are plotted in the very busy area of the Virgo Galaxy Cluster:
10
+ In this example, we create a custom [CollisionHandler](/reference-collisions/) for points to ensure _all_ labels are plotted in the very busy area of the Virgo Galaxy Cluster:
11
11
 
12
12
  <div class="tutorial">
13
13
  ```python
@@ -90,11 +90,17 @@
90
90
  <p class="example-card-title">The Big Dipper</p>
91
91
  </a>
92
92
  </li>
93
- <li>
93
+ <!-- <li>
94
94
  <a href="/examples/map-sagittarius/">
95
95
  <img src="/images/examples/map_sagittarius-sm.png" alt="Map of Sagittarius" class="off-glb" loading="lazy"/>
96
96
  <p class="example-card-title">Map of Sagittarius</p>
97
97
  </a>
98
+ </li> -->
99
+ <li>
100
+ <a href="/examples/map-galaxy/">
101
+ <img src="/images/examples/map_galaxy-sm.png" alt="Open Clusters around the Milky Way" class="off-glb" loading="lazy"/>
102
+ <p class="example-card-title">Galaxy Plot</p>
103
+ </a>
98
104
  </li>
99
105
  <li>
100
106
  <a href="/examples/map-canis-major/">
@@ -16,10 +16,12 @@ Starplot is a Python library for creating star charts and maps of the sky
16
16
 
17
17
  - ⭐ **Zenith Charts** - shows the entire sky at a specific time and place
18
18
 
19
- - 🌃 **Horizon Charts** - shows the horizon at a specific time and place
19
+ - 🌅 **Horizon Charts** - shows the horizon at a specific time and place
20
20
 
21
21
  - 🔭 **Optic Simulations** - shows what you'll see through an optic (e.g. telescope) at a specific time and place
22
22
 
23
+ - 🌌 **Galactic Charts** - shows a Mollweide projection in galactic coordinates
24
+
23
25
  - 🪐 **Planets and Deep Sky Objects (DSOs)** - with support for plotting their true extent
24
26
 
25
27
  - ☄️ **Comets and Satellites** - easy trajectory plotting
@@ -0,0 +1,63 @@
1
+ One of the biggest contributors to the visual quality of a map is labeling, which includes choosing carefully _what_ to label and also choosing good _positions_ for those labels. Obviously, you don't want labels to collide with each other, but there's also a few more subtle things to consider when labeling points and areas on a map. Starplot has a `CollisionHandler` to control some of these things.
2
+
3
+ When you create a plot, you can specify the default collision handler for three different types of labels:
4
+
5
+ - **Points** (`point_label_handler`) - stars, DSOs, etc
6
+ - **Areas** (`area_label_handler`) - constellations
7
+ - **Paths** (`path_label_handler`) - ecliptic, celestial equator, etc
8
+
9
+ You can also override these defaults on all functions that plot text. There are three distinct types of collision handlers because it's very common to want different rules for different types of labels. For example, the default area collision handler allows collisions with constellation lines, but the point handler does not.
10
+
11
+ _See the [Virgo Galaxy Cluster](/examples/map-virgo-cluster/) plot for an example of using a custom collision handler._
12
+
13
+
14
+ !!! tip "New Feature"
15
+
16
+ The collision handler is a newer feature of Starplot (introduced in version 0.19.0), and will continue to evolve in future versions. As always, if you notice any unexpected behavior with it, please [open an issue on GitHub](https://github.com/steveberardi/starplot/issues).
17
+
18
+
19
+ ## Defaults
20
+
21
+ Below are the defaults for each type of collision handler. These are the defaults for _all_ plot types.
22
+
23
+ ### Points
24
+
25
+ ```python
26
+ CollisionHandler(
27
+ attempts=10,
28
+ anchor_fallbacks=[
29
+ AnchorPointEnum.BOTTOM_RIGHT,
30
+ AnchorPointEnum.TOP_LEFT,
31
+ AnchorPointEnum.TOP_RIGHT,
32
+ AnchorPointEnum.BOTTOM_LEFT,
33
+ AnchorPointEnum.BOTTOM_CENTER,
34
+ AnchorPointEnum.TOP_CENTER,
35
+ AnchorPointEnum.RIGHT_CENTER,
36
+ AnchorPointEnum.LEFT_CENTER,
37
+ ]
38
+ )
39
+ ```
40
+
41
+ ### Areas
42
+
43
+ ```python
44
+ CollisionHandler(
45
+ allow_constellation_line_collisions=True
46
+ )
47
+ ```
48
+
49
+ ### Paths
50
+
51
+ ```python
52
+ CollisionHandler(
53
+ allow_constellation_line_collisions=True
54
+ )
55
+ ```
56
+
57
+
58
+ ::: starplot.CollisionHandler
59
+ options:
60
+ members_order: source
61
+ inherited_members: true
62
+ merge_init_into_class: true
63
+ show_root_heading: true
@@ -0,0 +1,18 @@
1
+ **Galaxy plots will plot everything in galactic coordinates, using a Mollweide projection**. These plots will always plot the entire galactic sphere, since that's how they're most commonly used.
2
+
3
+ Although they plot everything in galactic coordinates, all functions still expect equatorial coordinates (RA/DEC). This decision was made for two reasons: it seems most astronomical data is presented in equatorial coordinates, and creating a transformation framework in Starplot would be a pretty large project so it'll be reserved for a future version.
4
+
5
+ Stars on galaxy plots are plotted in their [_astrometric_ positions](reference-positions.md).
6
+
7
+ !!! tip "New Feature - Feedback wanted!"
8
+
9
+ These plots are a newer feature of Starplot (introduced in version 0.20.0), and will continue to evolve in future versions. If you notice any unexpected behavior or you think there's a useful feature missing, please [open an issue on GitHub](https://github.com/steveberardi/starplot/issues).
10
+
11
+
12
+ ::: starplot.GalaxyPlot
13
+ options:
14
+ inherited_members: true
15
+ merge_init_into_class: true
16
+ show_root_heading: true
17
+ docstring_section_style: list
18
+
@@ -12,6 +12,7 @@ Plots that use astrometric positions:
12
12
 
13
13
  - [MapPlot](reference-mapplot.md)
14
14
  - [ZenithPlot](reference-zenithplot.md)
15
+ - [GalaxyPlot](reference-galaxyplot.md)
15
16
 
16
17
 
17
18
  ### Apparent Position
@@ -14,7 +14,7 @@ title: 4 - Creating a Basic Map | Tutorial
14
14
  # 4 - Creating a Basic Map
15
15
 
16
16
  <figure markdown="span">
17
- ![Tutorial - Map Plot](/images/tutorial/tutorial_04.png){ width="900" }
17
+ ![Tutorial - Map Plot](/images/tutorial/tutorial_04.png)
18
18
  </figure>
19
19
 
20
20
  The zenith plot is known as a [perspective projection](https://en.wikipedia.org/wiki/Perspective_(graphical)), which means it depends on a time and place. They're useful for many things in astronomy, but Starplot also lets you create general-purpose maps of the sky that are independent of location.
@@ -14,7 +14,7 @@ title: 6 - Selecting Objects to Plot | Tutorial
14
14
  # 6 - Selecting Objects to Plot
15
15
 
16
16
  <figure markdown="span">
17
- ![Tutorial - Selecting Objects](/images/tutorial/tutorial_06.png){ width="700" }
17
+ ![Tutorial - Selecting Objects](/images/tutorial/tutorial_06.png)
18
18
  </figure>
19
19
 
20
20
  When plotting stars, constellations, or deep sky objects (DSOs), you may want to limit the plotted objects by more than just a limiting magnitude. Starplot provides a way to [filter objects by using expressions](/reference-selecting-objects/). This allows you to be very specific about which objects to plot, and it also gives you a way to style objects differently (e.g. if you want to style very bright stars differently than dim stars).
@@ -19,7 +19,7 @@ title: 7 - Object Lookup | Tutorial
19
19
 
20
20
  Starplot has [models](/reference-models/) for most objects you can plot, including stars, DSOs, planets, moons, and the Sun. These models also have properties relevant to each object (e.g. magnitude, ra, dec, etc). Sometimes you may want to create a plot directly from an object, so Starplot has a way to lookup objects by using each model's `get()` or `find()` functions.
21
21
 
22
- For example, here's a way to get Jupiter's position for tonight's sky and then create an optic plot directly from the Planet instance:
22
+ For example, here's a way to get Jupiter's position for a specific date/time and then create an optic plot directly from the Planet instance:
23
23
  <div class="tutorial" markdown>
24
24
  ```python linenums="1"
25
25
  --8<-- "tutorial/tutorial_07.py"
@@ -2,7 +2,7 @@ from starplot import MapPlot, StereoNorth, _
2
2
  from starplot.styles import PlotStyle, extensions
3
3
 
4
4
  style = PlotStyle().extend(
5
- extensions.BLUE_DARK, extensions.MAP, {"background_color": "#2C3F62"}
5
+ extensions.BLUE_DARK, extensions.MAP, {"background_color": "#193561"}
6
6
  )
7
7
 
8
8
  p = MapPlot(
@@ -22,7 +22,7 @@ p.stars(
22
22
  ],
23
23
  size_fn=lambda s: 2600, # make stars a constant size
24
24
  style__marker__symbol="star",
25
- style__marker__color="#ffff6c",
25
+ style__marker__color="hsl(59, 100%, 53%)",
26
26
  style__label__font_size=14,
27
27
  style__label__font_weight=400,
28
28
  )
@@ -24,7 +24,7 @@ p.constellations(
24
24
  )
25
25
  p.line(
26
26
  geometry=canis_major.border,
27
- style=p.style.constellation_borders,
27
+ style__line=p.style.constellation_borders,
28
28
  )
29
29
  p.open_clusters(where=[_.magnitude < 9], where_true_size=[False])
30
30
  p.stars(where=[_.magnitude < 9], where_labels=[_.magnitude < 4], bayer_labels=True)
@@ -0,0 +1,65 @@
1
+ from starplot import _, GalaxyPlot, DSO
2
+ from starplot.styles import PlotStyle, extensions
3
+ from starplot.callables import size_by_magnitude_factory
4
+
5
+ _sizer = size_by_magnitude_factory(6, 0.03, 12)
6
+
7
+ style = PlotStyle().extend(
8
+ extensions.BLUE_NIGHT,
9
+ extensions.MAP,
10
+ )
11
+
12
+ p = GalaxyPlot(
13
+ style=style,
14
+ resolution=5000,
15
+ scale=0.83,
16
+ )
17
+ p.gridlines()
18
+
19
+ p.galactic_equator(num_labels=2)
20
+ p.celestial_equator(num_labels=2)
21
+ p.ecliptic(num_labels=2)
22
+
23
+ p.milky_way()
24
+
25
+ p.stars(
26
+ where=[_.magnitude < 7],
27
+ where_labels=[False],
28
+ size_fn=_sizer,
29
+ style__marker__edge_color="#c5c5c5",
30
+ )
31
+
32
+ lmc = DSO.get(name="ESO056-115")
33
+ smc = DSO.get(name="NGC0292")
34
+ mc_style = {
35
+ "font_color": "#acc2e0",
36
+ "font_size": 42,
37
+ "font_weight": 700,
38
+ "border_width": 8,
39
+ "border_color": "#1e232a",
40
+ }
41
+
42
+ p.text(
43
+ "LMC",
44
+ ra=lmc.ra,
45
+ dec=lmc.dec,
46
+ style=mc_style,
47
+ )
48
+
49
+ p.text(
50
+ "SMC",
51
+ ra=smc.ra,
52
+ dec=smc.dec,
53
+ style=mc_style,
54
+ )
55
+
56
+ p.open_clusters(
57
+ where=[(_.magnitude < 16) | (_.magnitude.isnull())],
58
+ where_labels=[False],
59
+ where_true_size=[False],
60
+ )
61
+ p.legend()
62
+
63
+ p.title("Open Clusters Around the Milky Way", style__font_size=86)
64
+
65
+ p.export("map_galaxy.png", padding=1)
@@ -1,3 +1,5 @@
1
+ from PIL import Image, ImageFilter
2
+
1
3
  from starplot import MapPlot, Mollweide, _
2
4
  from starplot.data.catalogs import BIG_SKY
3
5
  from starplot.styles import PlotStyle, extensions
@@ -10,38 +12,23 @@ style = PlotStyle().extend(
10
12
 
11
13
  _sizer = size_by_magnitude_factory(6, 0.02, 7)
12
14
 
13
-
14
- def alpha(s):
15
- if s.magnitude > 9:
16
- return 0.5
17
- else:
18
- return 0.9
19
-
20
-
21
15
  p = MapPlot(
22
16
  projection=Mollweide(),
23
17
  style=style,
24
18
  resolution=4800,
25
19
  )
26
-
27
20
  p.stars(
28
21
  where=[_.magnitude < 11],
29
22
  where_labels=[False],
30
23
  size_fn=_sizer,
31
- alpha_fn=alpha,
32
- color_fn=color_by_bv,
33
- catalog=BIG_SKY,
34
- style__marker__edge_color="#c5c5c5",
35
- )
36
- p.stars(
37
- where=[_.magnitude < 6],
38
- where_labels=[False],
39
- size_fn=lambda s: _sizer(s) * 1.5,
40
- alpha_fn=lambda s: 0.4,
24
+ alpha_fn=lambda s: 0.95 if s.magnitude < 9 else 0.6,
41
25
  color_fn=color_by_bv,
42
26
  catalog=BIG_SKY,
43
- style__marker__symbol="star_8",
44
- style__marker__edge_color=None,
27
+ style__marker__edge_color="#fff",
45
28
  )
46
-
47
29
  p.export("map_milky_way_stars.png", padding=0.1, transparent=True)
30
+
31
+ # apply a median filter to increase contrast
32
+ with Image.open("map_milky_way_stars.png") as img:
33
+ filtered = img.filter(ImageFilter.MedianFilter(size=5))
34
+ filtered.save("map_milky_way_stars.png")
@@ -1,5 +1,5 @@
1
1
  from datetime import datetime
2
- from pytz import timezone
2
+ from zoneinfo import ZoneInfo
3
3
 
4
4
  from starplot import MapPlot, Orthographic, Observer, _
5
5
  from starplot.styles import PlotStyle, extensions
@@ -10,7 +10,7 @@ style = PlotStyle().extend(
10
10
  extensions.MAP,
11
11
  )
12
12
 
13
- tz = timezone("America/Los_Angeles")
13
+ tz = ZoneInfo("America/Los_Angeles")
14
14
  dt = datetime(2024, 10, 19, 21, 00, tzinfo=tz)
15
15
 
16
16
  observer = Observer(
@@ -33,7 +33,7 @@ p = MapPlot(
33
33
  style=style,
34
34
  resolution=3000,
35
35
  scale=1,
36
- collision_handler=collision_handler,
36
+ point_label_handler=collision_handler,
37
37
  )
38
38
  p.title("Virgo Cluster", style__font_color="hsl(330, 44%, 92%)")
39
39
  p.stars(where=[_.magnitude < 12], where_labels=[False])
@@ -19,7 +19,7 @@ observer = Observer(
19
19
  lon=-116.507025,
20
20
  )
21
21
 
22
- moon = Moon.get(dt=observer.dt, lat=observer.lat, lon=observer.lon)
22
+ moon = Moon.get(observer)
23
23
 
24
24
  p = OpticPlot(
25
25
  ra=moon.ra,
@@ -39,8 +39,7 @@ iss = Satellite.from_tle(
39
39
  name="ISS (ZARYA)",
40
40
  line1="1 25544U 98067A 25312.42041502 .00013418 00000+0 24734-3 0 9990",
41
41
  line2="2 25544 51.6332 312.3676 0004093 47.8963 312.2373 15.49452868537539",
42
- lat=observer.lat,
43
- lon=observer.lon,
42
+ observer=observer,
44
43
  )
45
44
 
46
45
  dt_start = observer.dt - timedelta(minutes=1)
@@ -77,7 +76,7 @@ for sat in iss.trajectory(dt_start, dt_end, step=timedelta(seconds=1)):
77
76
  "zorder": 5_000,
78
77
  },
79
78
  },
80
- label=sat.dt.strftime("%-H:%M:%S"),
79
+ label=sat.observer.dt.strftime("%-H:%M:%S"),
81
80
  )
82
81
 
83
82
  p.export("optic_iss_transit.png", padding=0.1, transparent=True)
@@ -12,7 +12,7 @@ observer = Observer(
12
12
  lon=-116.585556,
13
13
  )
14
14
 
15
- m = Moon.get(dt=observer.dt, lat=observer.lat, lon=observer.lon)
15
+ m = Moon.get(observer)
16
16
 
17
17
  op = m.create_optic(
18
18
  observer=observer,
@@ -14,7 +14,7 @@ observer = Observer(
14
14
  lon=-81.669722,
15
15
  )
16
16
 
17
- m = Moon.get(dt=observer.dt, lat=observer.lat, lon=observer.lon)
17
+ m = Moon.get(observer)
18
18
 
19
19
  op = m.create_optic(
20
20
  observer=observer,
@@ -23,7 +23,7 @@ HERE = Path(__file__).resolve().parent
23
23
 
24
24
  RESULTS_PATH = HERE / "results.html"
25
25
 
26
- NUM_WORKERS = 10
26
+ NUM_WORKERS = 12
27
27
 
28
28
  console = Console()
29
29