how to set y-axis as log scale?

2 107 vues (au cours des 30 derniers jours)
Rohit Bhoi
Rohit Bhoi le 15 Avr 2016
Commenté : Mr Thadi le 29 Sep 2024
I am plotting x-y plot using plot function. I want to set only y-axis as log scale and x-axis as linear? How to do that? I used loglog function but it scales both axis but I want only Y.

Réponse acceptée

Walter Roberson
Walter Roberson le 22 Sep 2023
Modifié(e) : MathWorks Support Team le 22 Sep 2023
The best way to create that type of axes is to use the semilogy function. Alternatively, you can set the ‘YScale’ property on the axes:
set(gca, 'YScale', 'log')
***Update from Mathworks Support Team - September 2023***
As of R2023b, you can also use the 'yscale ' function. 
  23 commentaires
Adam Danz
Adam Danz le 12 Juil 2024
This issue arises because the first bin edge is at x=0 and log(0)=-inf which cannot be represented graphically.
Assuming there are no data less than or equal to 0 and no bin edges less than 0, you could set the first bin edge according to the smallest value in the data.
x = rand(1,1000)*10000;
minPositiveValue = min(x(x>0),[],'all');
minbin = 10^floor(log10(minPositiveValue));
ax = axes();
h = histogram(ax, x);
ax.XScale = 'log';
if h.BinEdges(1) == 0
h.BinEdges(1) = minbin;
end
Mr Thadi
Mr Thadi le 29 Sep 2024
Thank you Mr Adam Danz

Connectez-vous pour commenter.

Plus de réponses (2)

Toshia M
Toshia M le 20 Sep 2023
Starting in R2023b, you can change the scale of any axis after you create the plot by calling the xscale, yscale, or zscale function.
For example, create a plot of two vectors x and y. Then set the scale of the y-axis to logarithmic.
x = 1:100;
y = x.^2;
plot(x,y)
grid on
yscale log

Rohit Sinha
Rohit Sinha le 27 Avr 2022
The easiest way to do this is simply use the following command instead of plot
semilogy(x,y);
This will plot x axis on a linear scale and y axis on a log scale. Similarly, if you want to plot x axis on log scale and y axis on a linear scale, you can use
semilogx(x,y) ;
  2 commentaires
Walter Roberson
Walter Roberson le 27 Avr 2022
semilogy() is the first thing I mentioned in my answer in 2016.
Nicholas Santiago
Nicholas Santiago le 4 Nov 2022
yo i totally missed that I generally only read the bold stuff, thanks a ton!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Help Center et File Exchange

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

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

Start Hunting!

Translated by