Log axis with percentage tick labels
    16 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Dmitriy Saltanov
 am 24 Sep. 2020
  
    
    
    
    
    Kommentiert: Steve Eddins
      
 am 24 Sep. 2020
            Hi, just starting to use matlab here, running a few experimental calculations and pretty excited so far. 
I'm currently struggling with displaying a graph of cumulative relative returns where changing value axis scale to log seems to defeat percentage formatting and override it with a default format, making presentation hard to grasp.
figure;
ax = axes;
plot(sourceData.Date, sourceData.ResultCompound);
ytickformat(ax, 'percentage'); % also tried ytickformat(ax, '%0.2f%%')
ax.YScale = 'log'; % no problem with default/'linear'
So my question is, is there a way to make log-scaled graphs with percentage tick labels?
0 Kommentare
Akzeptierte Antwort
  Star Strider
      
      
 am 24 Sep. 2020
        I am not certain what you want to do.  
Try this: 
x = linspace(-2, 2, 50);                            % Create Data
y = exp(-(x).^2/2);                                 % Create Data
figure
semilogy(x, y)
grid
yt = get(gca, 'YTick');
ytl = compose('%.0f%%', yt*100)
set(gca, 'YTick',yt, 'YTickLabel',ytl)
.
2 Kommentare
  Star Strider
      
      
 am 24 Sep. 2020
				My pleasure!  
I am not certain what you want.  It is straightforward to define new ticks and tick labels.  
This one change to my original code does that: 
x = linspace(-2, 2, 50);                            % Create Data
y = exp(-(x).^2/2);                                 % Create Data
figure
semilogy(x, y)
grid
yt = get(gca, 'YTick');
ytn = linspace(min(yt), max(yt), 4);                % Define Nes ‘ytick’ Values
ytl = compose('%.1f%%', ytn*100)
set(gca, 'YTick',ytn, 'YTickLabel',ytl)
The new tick values always need to be within the range of the current tick values, however within that range they can be anything.  
Weitere Antworten (1)
  Steve Eddins
      
 am 24 Sep. 2020
        From what I can tell, the ruler object ignores the TickLabelFormat property (which is set by ytickformat) when the Scale is 'log'. I will record an enhancement/documentation request about this.
As a workaround, you can set the tick labels directly to whatever strings you want by using yticklabels. Try something like this:
yticklabels(string(yticks) + "%")
2 Kommentare
  Steve Eddins
      
 am 24 Sep. 2020
				Thanks, Dmitriy. I have your comments to the enhancement request record.
Siehe auch
Kategorien
				Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


