how to plot clearer angle yticklabels at whole fractions of 360° (and/or fractions of pi, for radians) in stead of decimal

1 view (last 30 days)
I've been looking and trying for a while to plot phase angles with yticklabels matching whole fractions of the angle-domains. Eg: [0 45 90 135 180 ...] for degrees, and [0 pi/4 pi/2 3pi/4 ... ] for radians. And automatically adjusting the fractional resolution according to the min and max phase limits of the concerning plot. Is there an easy way to achieve this, or alternatively, any code that deals with this? Thanks in advance! K

Answers (1)

Iain
Iain on 20 Oct 2014
Edited: Iain on 20 Oct 2014
You can change where the ticks go:
set(axishandle,'YTick', [0 4 6 8 ...] )
You can change the labels as you like:
set(axishandle,'YTickLabel', {'Five' 'Banana' .... } )
  2 Comments
Njiruk Syub
Njiruk Syub on 20 Oct 2014
Yes, I'm familiar with these options, but this method is static, i.e. it lacks the automatic adapting resolution according to the phase range and axis scaling. I work with a lot of phase angle plots (of various ranges) and it would be just to much work to manually adapt the yticklabels each time. I've tried an adapted plot function that includes this:
phase = angle(ydata); ytickmin=floor(min(phase/(pi/4))); ytickmax=ceil(max(phase/(pi/4))); ytickvalues = (ytickmin:ytickmax)*(pi/4); set(gca,'YTick', ytickvalues)
But that is still not satisfying, as it is not flexible for different ranges (it remains problematic when using linspace for the ytickvalues).
K
Iain
Iain on 20 Oct 2014
Ok, what you CAN do is:
1. Determine the X/Y limits of the chart.
2. Figure out where you want your ticks to go. - Say every 8th of the range, rounded to the nearest nice value?
3. Issue the set tick location & label commands.
4. Attach that code to the zoom, pan & rotate callbacks...

Sign in to comment.

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!