Python, matplotlib plot 2D histogram on polar axis.

Click For Summary
SUMMARY

The discussion focuses on plotting a 2D histogram on a polar axis using Python's Matplotlib library. The user is attempting to visualize three vectors: azimuth, frequency, and power, but encounters issues when using the pcolormesh function for the histogram. Suggestions include experimenting with the parameters of the mesh and considering alternative plotting functions like bar for better visualization. The user is encouraged to inspect the data to ensure it is not overly biased, which may affect the histogram's appearance.

PREREQUISITES
  • Proficiency in Python programming
  • Familiarity with NumPy for numerical operations
  • Understanding of Matplotlib for data visualization
  • Knowledge of polar coordinates and histograms
NEXT STEPS
  • Explore the matplotlib.pyplot.bar function for alternative histogram representations
  • Investigate the matplotlib.colors module for customizing colormaps
  • Learn about numpy.histogram2d for creating 2D histograms
  • Research techniques for inspecting and preprocessing data before visualization
USEFUL FOR

Data scientists, Python developers, and anyone interested in advanced data visualization techniques using Matplotlib.

funcosed
Messages
35
Reaction score
0
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.figure(figsize=(14,14))
plt.subplot(111, polar=True)
#plt.scatter(baz, freq, c=pwr)
plt.pcolormesh(H)
plt.show()
 
Technology news on Phys.org
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?
 
Hi,
I've attached a link to a picture showing what I need, and I did try bar but couldn't get that to work properly either.
 
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
 
solution here :)
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
4
Views
5K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 21 ·
Replies
21
Views
6K
  • · Replies 3 ·
Replies
3
Views
4K
Replies
7
Views
3K