Prevent last xlabel entry getting cut-off after adjusting xlim

Hi,
So I'm trying to either:
  1. Prevent the last xlabel entry (12) from getting cut-off without increasing the range set using xlim as shown in the first image below.
  2. 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

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?
Yea, I'm trying to have my plot look like the first image while having my xlabel entry, 12, remain on the x-axis. I don't have any ideas right now or if it's even possible.
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.
Unfortunately it didn't work. Here's what I got when I tried it:
So with your input, my last datapoint was plotted at x = 12. However, in the image above is exactly what I'm trying to plot. The reason for trying create one like the above image, is that the data I'm plotting is a convergence plot for figure of merit as a function of rotor revolutions (revs), in which x = 12 is the 12th rotor revolution (works out to be 8,640 time steps in my simulation) in my convergence plot.
Oh I see, I missed that the axis wasn't scaled linearly. You can still set the tick labels afterwards.
Thanks Tommy! Much appreciated. Got the end result I was looking for:

Sign in to comment.

Answers (0)

Categories

Products

Release

R2020a

Asked:

JS
on 23 May 2020

Commented:

JS
on 24 May 2020

Community Treasure Hunt

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

Start Hunting!