Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Python, matplotlib plot 2D histogram on polar axis.

  1. Nov 21, 2012 #1
    Any python/matplotlib experts out there?? This one has been driving me crazy all day. I have three vectors, azimuth, frequency and power, which I would like to histogram and plot on a polar axis. I can plot a scatter plot this way no problem but the histogram gets messed up somehow. An example is below, anybody know how to do this properly??

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

    baz = np.zeros((20))
    freq = np.zeros((20))
    pwr = np.zeros((20))
    for x in range(20):
    baz[x] = random.randint(20,25)*10
    freq[x] = random.randint(1,10)*10
    pwr[x] = random.randint(-10,-1)*10

    baz = baz*np.pi/180.

    abins = np.linspace(0,2*np.pi,360)
    sbins = np.linspace(1, 100)

    H, xedges, yedges = np.histogram2d(baz, freq, bins=(abins,sbins), weights=pwr)

    plt.subplot(111, polar=True)
    #plt.scatter(baz, freq, c=pwr)
  2. jcsd
  3. Nov 21, 2012 #2
    I don't follow...what is it that you are trying to achieve? Can you show a picture? If I uncomment the scatter plot and comment out the colormesh, I do see a nice picture...it is just that colormesh covers the entire place....are you sure you want colormesh? or some other function? how about bar?
  4. Nov 21, 2012 #3
    I've attached a link to a picture showing what I need, and I did try bar but couldnt get that to work properly either.
  5. Nov 21, 2012 #4
    Hhhhhmmm....maybe you just need to play around with the parameters of the mesh, you know, the colormap and which color correspond to which range...you should inspect the data you are plotting, maybe is too one sided or something
  6. Nov 22, 2012 #5
    solution here :)
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook