How to plot log-scale with number ?
29 次查看(过去 30 天)
显示 更早的评论
How can I plot log scale with the numbers like below image ?
0 个评论
采纳的回答
Tommy
2020-6-8
Maybe something like this?
% data:
X = 2*logspace(1, 3, 100);
Y = rand(100,1);
% labels to keep:
labels = [20 30 50 70 100 200 300 500 1000 2000];
% prepare axes, plot:
ax = axes('XScale', 'log', 'NextPlot', 'add');
plot(ax, X, Y, '.')
ax.XLim = [20 2000];
ax.XAxis.TickDirection = 'out';
% steal the tick locations from the minor ticks, then turn the minor ticks off:
drawnow
ax.XTick = ax.XAxis.MinorTickValues;
ax.XMinorTick = 'off';
% remove labels we don't want to keep:
ax.XTickLabel(~ismember(ax.XTick, labels)) = {''};
更多回答(1 个)
the cyclist
2020-6-8
3 个评论
the cyclist
2020-6-8
There are multiple ways to do this task. Here is one way:
% data:
X = 2*logspace(1, 3, 100);
Y = rand(100,1);
% Locations of the ticks (and also how we want them labeled)
tickLoc = [20 30 50 70 100 200 300 500 1000 2000];
% Create a new figure window, and plot the data with log x-axis
figure
semilogx(X,Y);
% Set the axis limit, tick locations and labels
set(gca, ...
'XLim',[20 2000], ...
'XTick', tickLoc, ...
'XTickLabel',tickLoc);
Tommy's solution and mine are doing effectively the same thing (although I did not do all the little things he did like make the tick marks point outward). The biggest difference is that I used the semilogx command, where he created the axes first, and then set the 'XScale' property to 'log'.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Lighting, Transparency, and Shading 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!