Масштабирование ферической проекции в matplotlib - PullRequest
1 голос
/ 26 мая 2020

Мне нужно отобразить каталог галактик, спроецированных на небо. Здесь уместно не все небо, поэтому мне нужно центрировать зум на соответствующей части. Я в порядке с более или менее любыми проекциями, такими как Lambert, Mollweide, et c. Вот фиктивные данные и образец кода с использованием Mollweide:

# Generating mock data
np.random.seed(1234)
(RA,Dec)=(np.random.rand(100)*60 for _ in range(2))

# Creating projection
projection='mollweide'
fig = plt.figure(figsize=(20, 10));
ax = fig.add_subplot(111, projection=projection);

ax.scatter(np.radians(RA),np.radians(Dec)); 

# Creating axes
xtick_labels = ["$150^{\circ}$", "$120^{\circ}$", "$90^{\circ}$", "$60^{\circ}$", "$30^{\circ}$", "$0^{\circ}$", 
                "$330^{\circ}$", "$300^{\circ}$", "$270^{\circ}$", "$240^{\circ}$", "$210^{\circ}$"]
labels = ax.set_xticklabels(xtick_labels, fontsize=15);     
ytick_labels = ["$-75^{\circ}$", "$-60^{\circ}$", "$-45^{\circ}$", "$-30^{\circ}$", "$-15^{\circ}$", 
                "$0^{\circ}$","$15^{\circ}$", "$30^{\circ}$", "$45^{\circ}$", "$60^{\circ}$", 
                "$75^{\circ}$", "$90^{\circ}$"]

ax.set_yticklabels(ytick_labels,fontsize=15);     
ax.set_xlabel("RA");
ax.xaxis.label.set_fontsize(20);
ax.set_ylabel("Dec");
ax.yaxis.label.set_fontsize(20);
ax.grid(True);

Результат следующий:

Я пробовал различные set_whateverlim, set_extent, clip_box и т. Д., А также импорт карт и передача ccrs.LambertConformal(central_longitude=...,central_latitude=...) в качестве аргументов. Мне не удалось получить результат.

Кроме того, я хотел бы сместить метки RA вниз, так как их трудно прочитать с реальными данными. К сожалению, ax.tick_params(pad=-5) ничего не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...