การจัดเรียงค่าลองจิจูดบนแกน x ใหม่

ฉันมีอาร์เรย์ลองจิจูดเวลาซึ่งฉันกำลังวางแผนโดยใช้ฟังก์ชัน matplotlib Contourf ค่าลองจิจูดของฉันครอบคลุมตั้งแต่ [-180, 180] และปรากฏบนแกน x ตามลำดับนี้

ฉันต้องการให้แกน x วิ่งจาก 0 องศาถึง 0 องศา ดังนั้นขีดแกน x ของฉันจะเป็น (0, 60, 120, 180, -120, -60, 0) มีวิธีง่าย ๆ ในการทำเช่นนี้หรือไม่?

รหัสปัจจุบันของฉันคือ:

levels = np.arange(0, 5+0.5, 0.5)
lon_ticks = np.array([0, 60, 120, 180, -120, -60, 0])

for i in range(3):
    fig = plt.figure(figsize = (15, 15))
    ax = fig.add_subplot(1, 1, 1)
    im = ax.contourf(lon,date_list,TRMM_lat_mean[:,:,i], 
                 levels = levels, extend = 'both', cmap = 'gist_ncar')
    cb = plt.colorbar(im)


    plt.savefig("C:/Users/amcna/Desktop/fig{number}.png".format(number = i)) 

ผลลัพธ์ใด:

!(https://imgur.com/epedcTu)

ดังที่คุณเห็นอาร์เรย์ลองจิจูดของฉันมีช่วงตั้งแต่ [-180, 180] แต่ฉันต้องการให้จัดเรียงตามลำดับที่ฉันระบุไว้ข้างต้น


person Andrew McNaughton    schedule 29.07.2020    source แหล่งที่มา
comment
โปรดคุณช่วยแก้ไขและเพิ่มโค้ดที่เป็นปัญหาได้หรือไม่   -  person Arvind Raghu    schedule 31.07.2020
comment
ขออภัยที่ตอบช้า. ฉันได้แก้ไขโพสต์แล้ว   -  person Andrew McNaughton    schedule 04.08.2020


คำตอบ (1)


เนื่องจากข้อมูลของคุณเป็นแบบวงกลม การแสดงผ่านพิกัดเชิงขั้วจึงอาจใช้งานได้:

ตัวอย่าง:

def f(x, y):
    return np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x)

x = np.radians([0, 60, 120, 180, -120, -60, 0])
y = np.arange(0, 5+0.5, 0.5)

X, Y = np.mesh

grid(x, y)
Z = f(X, Y)

#-- Plot... ------------------------------------------------
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'))
ax.contourf(Y, X, Z)

plt.show()

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณไม่ต้องการทำเช่นนั้น หัวข้อนี้อาจช่วยคุณได้: การจัดการแบบวน ข้อมูลที่มีรูปร่าง/โครงร่างของ matplotlib

person ttreis    schedule 04.08.2020
comment
ขอบคุณสำหรับลิงค์เกี่ยวกับข้อมูลแบบวนรอบ - person Andrew McNaughton; 05.08.2020