พล็อตความหนาแน่นของ Matplotlib ในพิกัดเชิงขั้ว?

ฉันมีอาร์เรย์ที่บันทึกเป็นไฟล์ txt ซึ่งมีรายการที่สอดคล้องกับค่าของการแจกแจงในพิกัดเชิงขั้ว ดูเหมือนว่านี้:

  f(r1,theta1) f(r1, theta2) ..... f(r1, theta_max)
  f(r2,theta1) f(r2, theta2) .....        .
        .                                 .
        .                                 .
        .                                 .
  f(r_max,theta1) .................f(r_max, theta_max)

ฉันต้องการพล็อตความหนาแน่นของ f (ยิ่ง f สูงเท่าไร ฉันก็ยิ่งต้องการให้สีเป็นสีแดงมากขึ้นเท่านั้น) มีวิธีการทำเช่นนี้กับ matplotlib หรือไม่? รหัสที่ชัดเจนจะเป็นประโยชน์เนื่องจากฉันยังใหม่กับเรื่องนี้เป็นอย่างมาก


person naomig    schedule 25.06.2015    source แหล่งที่มา
comment
ฉันไม่คิดว่าคุณต้องการพล็อตความหนาแน่นจริงๆ คุณมีหนึ่งรายการ f(r,t) สำหรับแต่ละพิกัดกริดเชิงขั้วใช่ไหม แต่ค่าของ f แตกต่างกันไปในแต่ละจุด? คุณเพียงแค่ต้องสร้างแผนที่ความร้อนให้กับอาเรย์นั้นบนพล็อตเชิงขั้ว   -  person cphlewis    schedule 30.06.2015
comment
@cphlewis ใช่นั่นคือสิ่งที่ฉันหมายถึง ฉันพูดผิดเพราะ (ไม่สำคัญ) f เป็นฟังก์ชันความหนาแน่น   -  person naomig    schedule 30.06.2015
comment
นอกจากนี้ ฉันยังพบแหล่งข้อมูลที่ดีสำหรับสิ่งนี้ -- blog.rtwilson com/producting-polar-contour-plots-with-matplotlib   -  person naomig    schedule 30.06.2015


คำตอบ (1)


ในตัวอย่างนี้ a คือคุณ theta1...thetan, b คือ r1...rn ของคุณ, c คือ f(a, b):

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

#fake data:
a = np.linspace(0,2*np.pi,50)
b = np.linspace(0,1,50)
A, B = np.meshgrid(a, b)
c = np.random.random(A.shape)

#actual plotting
ax = plt.subplot(111, polar=True)
ax.set_yticklabels([])
ctf = ax.contourf(a, b, c, cmap=cm.jet)
plt.colorbar(ctf)

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

โดยพื้นฐานแล้วจะเป็นพล็อตชั้นความสูงที่ถูกเติมในแกนเชิงขั้ว คุณสามารถระบุแผนผังสีอื่นด้วย cmap=... cm.jet เปลี่ยนจากสีน้ำเงินเป็นสีแดง โดยสีแดงเป็นค่าที่มากที่สุด

person CT Zhu    schedule 30.06.2015