Python, matplotlib plot 2D histogram on polar axis.

Click For Summary

Discussion Overview

The discussion revolves around plotting a 2D histogram on a polar axis using Python's matplotlib library. Participants explore the challenges faced in achieving the desired visualization, particularly when using the colormesh function versus other plotting methods.

Discussion Character

  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant describes their attempt to plot a 2D histogram using azimuth, frequency, and power vectors, expressing frustration with the colormesh output.
  • Another participant requests clarification on the desired outcome and suggests that a scatter plot works well, questioning the appropriateness of using colormesh.
  • A third participant mentions trying a bar plot but encountered issues, indicating that they are looking for a specific visual representation.
  • One participant suggests adjusting the parameters of the mesh, including the colormap, and encourages inspecting the data for potential issues.
  • A later reply hints at a potential solution without elaborating on the details.

Areas of Agreement / Disagreement

Participants express differing opinions on the best method to visualize the data, with no consensus on the most effective approach or resolution to the original problem.

Contextual Notes

Participants have not resolved issues related to the parameters of the colormesh function, the appropriateness of different plotting methods, or the characteristics of the data being visualized.

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
2K
  • · 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