# Obliquity vs Diameter for all Solar System Objects (SSOs)
# (c) SsODNet, B.Carry & J.Berthier, Lagrange/OCA & LTE/Obs. Paris

import rocks
import matplotlib.pyplot as plt

# Read SsODNet BFT: only diameter and obliquity (for speedup)
bft = rocks.load_bft(columns=["diameter.value", "spins.obliquity.value"])

# Some columns contain `arrays` in the BFT, to access all values you can simply `explode` the DataFrame
df = bft.explode("spins.obliquity.value")

# All Solar System Objects (SSOs)
fig, ax = plt.subplots()
ax.scatter(
    df["diameter.value"],
    df["spins.obliquity.value"],
    s=1,
    alpha=0.2,
    color="grey",
    label="SSOs",
)

# Axes
ax.set_xlabel("Diameter / km")
ax.set_ylabel("Obliquity / deg")
ax.set_xscale("log")
ax.set_xlim(1, 500)
ax.set_ylim(0, 180)

# To disk
fig.tight_layout()
fig.savefig("test-Diameter-Obliquity.png", transparent=True, dpi=180)
