2017-09-26 355 views
0

我有繪出針對經度點的磁通密度的曲線圖:標籤x軸

enter image description here

但我需要x軸從24.3讀 - > 0在中心 - > 335.7

我已經使用matplotlib.ticker設置每30個像素的滴答,相當於每1度。

import numpy as np 
from astropy.io import fits 
import matplotlib.pyplot as plt 
import matplotlib.ticker as ticker 

hdulist = fits.open('w1_subtracted_2_deg.fits') 
nodisk_data, nodisk_header = hdulist[0].data, hdulist[0].header 

x = range(nodisk_data.shape[1]) 
y = np.sum(nodisk_data, axis = 0) 

ax = plt.axes() 
ax.xaxis.set_major_locator(ticker.MultipleLocator(300)) 
ax.xaxis.set_minor_locator(ticker.MultipleLocator(30)) 

plt.plot(x, y) 
plt.title('Longitudinal sum of flux density per steradian') 
plt.xlabel(r'Galactic longitude, $\ell$') 
plt.ylabel(r'Integrated flux density per steradian, $MJ.sr^{-1}$') 
plt.grid(True) 
plt.show() 
plt.savefig('add_cols.png') 

hdulist.close() 

有一個簡單的命令,我可以用這一點,也許在axes類,或是否需要進行硬編碼的x軸點的列表?或者,也可以將中心像素設置爲參考像素,並在圓周的任一方向上繪製標記爲24.3度的圖?

+2

我會通過首先改變沿x軸的_values_到正確度,然後繪製度值並讓蜱是做到這一點自動。 – cphlewis

回答

0

我固定x軸標籤這樣的:

xticks = [0, 183, 365, 547, 729, 912, 1095, 1277, 1459] 
long_marks = [24, 18, 12, 6, 0, 354, 348, 342, 335] 
ax = plt.axes() 
ax.set_xticks(xticks) 
ax.set_xticklabels(long_marks)