Prevent last xlabel entry getting cut-off after adjusting xlim
Show older comments
Hi,
So I'm trying to either:
- Prevent the last xlabel entry (12) from getting cut-off without increasing the range set using xlim as shown in the first image below.
- If were to adjust xlim in order to include the last xlabel entry, is there a way to either stretch out my plot to fill in the white space where my plot ends and still keep the last xlabel entry (12) as shown in the second image below.
This is my current script for generating the plots. The only thing I change to generate the plots shown in the images below is xlim:
%% Making Plot %%
clear
clc
close all
filename='fm.xlsx';
[A]=importdata(filename);
figure
hold on
for i = 1:5
plot(A(:,i),'LineWidth',1.5)
end
xlim([0 9000]) %the line I change either using xlim([0 9000]) or xlim([0 8640]), I have a total 8640 data points
ylim([0 1.0])
% axis([0 8640 0 1])
% axis tight
axis fill
box off;
xlims = get(gca,'XLim');
ylims = get(gca,'YLim');
line(xlims,[ylims(2) ylims(2)],'Color','black','LineWidth',1.5);
line([xlims(2) xlims(2)],ylims,'Color','black','LineWidth',1.5);
set(gca,'XMinorTick','on')
set(gca,'YMinorTick','on')
set(gca,'linewidth',1.5)
set(gca,'XTickLabel',{'';'4';'';'8';'';'9';'';'10';'';'12'})
size(get(gca,'XTick'))


Thanks!
6 Comments
Tommy
on 24 May 2020
Your data ends around x = 11.6, so I don't see how you could display 12 on the x axis while having your data extend all the way to the end of the axis. What are you hoping it will look like?
Or maybe you want to plot your data over a range of x values which ends at 12, rather than over the indices as you are currently doing?
JS
on 24 May 2020
Ok, so it sounds like you want the final data values to be plotted at x = 12. Assuming the first data values should still be plotted at x = 0, does this work?
X = linspace(0, 12, size(A,1));
for i = 1:5
plot(X, A(:,i),'LineWidth',1.5)
end
No need to set the x limits then.
Plotting over the desired x range is simpler than plotting over indices and then updating the tick labels to display the desired x range. After all, what if the resolution of your signal increased and you were left with 10 times as many points? You are hard-coding in xlim([0 8640]), but if your signal had 86400 points, then you would crop out all but the first tenth of your data.
JS
on 24 May 2020
Tommy
on 24 May 2020
Oh I see, I missed that the axis wasn't scaled linearly. You can still set the tick labels afterwards.
JS
on 24 May 2020
Answers (0)
Categories
Find more on Data Distribution Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
