How to remove scientific notation from axes labels on log-log plot, and add thousands separator?
43 次查看(过去 30 天)
显示 更早的评论
I am having difficulty making a plot with log-log axes where the axis labels are in fixed notation, not scientific notation, and commas are used as the thousands separator. After creating the plot and converting the axes to log scale, I was able to convert the axes to fixed notation using 3 methods:
1) Specifying the ticks
xtick = [1 10 100 1000];
xticks(xtick);
xticklabels(xtick);
2) xt = ax.XTick;
xt_sigfig = round(xt, 3, 'significant');
ax.XTickLabel = xt_sigfig;
3) using "compose" function
ax.XAxis.TickLabels = compose('%g', ax.XAxis.TickValues)
However, I was unable to add a thousands separator using any of those methods. For instance I would like the x tick labels to read: 1 10 100 and 1,000. And I would like the y tick labels to read: 1 10 100 1,000 10,000 and 100,000. My data and code are below using the "compose" function. Do I have to create tick labels that are strings? Any help would be greatly appreciated.
% X values
Q=[20.09 0.67 61.43 33.54 167.35 142.88 3.27 39.00 55.82 134.59 58.88 1.25 0.15 12.80 5.09 23.18 18.56 84.19 22.23 15.80 28.97 48.91 2.60 65.69 107.82]
% Y values
S=[4190 60.10 56700 39900 82000 17700 26.40 12800 135000 20100 8420 7.14 39.40 329 253 5870 4270 23400 2320 5560 9210 107000 27.40 15700 17200]
plot(Q,S,'o');
axis([0 1000 0 200000]);
set(gca,'XScale','log');
set(gca,'YScale','log');
ax=gca;
ax.XAxis.TickLabels = compose('%g', ax.XAxis.TickValues)
ax.YAxis.TickLabels = compose('%g', ax.YAxis.TickValues)
0 个评论
采纳的回答
Walter Roberson
2022-6-28
编辑:Walter Roberson
2022-6-28
Although you can set ax.xAxis.TickLabelFormat and ax.XAxis.Exponent none of the automatic formats support thousands separator. You will need to set the tick labels.
And if you permit zoom or pan, you will need to add listeners or put in something like a ResizeFcn Callback
https://www.mathworks.com/matlabcentral/answers/8080-how-to-set-1000-separator-for-large-numbers-in-gui-matlab
5 个评论
Walter Roberson
2022-6-30
Odd...
@Stephen23 did you just happen to notice in the xtickformat information that it gives the example that %.4d format displays pi as 0003 ? That is not the same as fprintf()
fprintf('%.4d\n', pi)
but the xtickformat information appears to be correct for it
plot(rand(1,5))
xticks(pi)
xtickformat('%.4d')
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!