how to set y-axis as log scale?
4,595 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
Walter Roberson
2023-9-22
编辑:MathWorks Support Team
2023-9-22
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 个评论
Adam Danz
2024-7-12
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
更多回答(2 个)
Rohit Sinha
2022-4-27
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 个评论
Nicholas Santiago
2022-11-4
yo i totally missed that I generally only read the bold stuff, thanks a ton!
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!