Effacer les filtres
Effacer les filtres

I'm trying to call patch without permanently changing my X axis from a datetime array.

10 vues (au cours des 30 derniers jours)
Hi. I'm trying to call patch without permanently changing my X axis from a datetime array. Here is an example of what I'm trying to do. The call to temporarily change the data type in XData is not working. Any suggestions?
% Create data & plot
x = datetime(2017,1,1) + caldays(1:31);
y = rand(1,31);
plt = plot(x, y);
% Convert X axis to a double
plt.XData = datenum(plt.XData);
% Shade patch area
Ys = ylim;
Y1 = [Ys(1),Ys(2),Ys(2),Ys(1)];
x1 = datenum(datetime(2017,1,14));
x2 = datenum(datetime(2017,1,21));
ptch = patch([x1 x1 x2 x2], Y1, [0 0 0]);
ptch.FaceAlpha = .15;
% Convert X axis back to a datetime type
plt.XData = datetime(plt.XData, 'ConvertFrom', 'datenum');

Réponse acceptée

Walter Roberson
Walter Roberson le 9 Oct 2017
Modifié(e) : Walter Roberson le 15 Mai 2020
x = datetime(2017,1,1) + caldays(1:31);
y = rand(1,31);
plt = plot(x, y);
hold on
x1 = datetime(2017,1,14);
x2 = datetime(2017,1,21);
fx = [x1 x2 x2 x1 x1]
Ys = ylim;
fy = [Ys(1) Ys(1) Ys(2) Ys(2) Ys(1)];
fill( fx, fy, [0 0 0], 'FaceAlpha', 0.15);
hold off
  4 commentaires
Walter Roberson
Walter Roberson le 15 Mai 2020
Please show your call to datetime() that is triggering the problem, including showing the class() of each of the variables you are passing in.

Connectez-vous pour commenter.

Plus de réponses (1)

Sean de Wolski
Sean de Wolski le 9 Oct 2017
Use fill instead of patch.
% Create data & plot
x = datetime(2017,1,1) + caldays(1:31);
y = rand(1,31);
plt = plot(x, y);
% Convert X axis to a double
% plt.XData = datenum(plt.XData);
% Shade patch area
Ys = ylim;
Y1 = [Ys(1),Ys(2),Ys(2),Ys(1)];
x1 = (datetime(2017,1,14));
x2 = (datetime(2017,1,21));
ptch = fill([x1 x1 x2 x2], Y1, [0 0 0]);
ptch.FaceAlpha = .15;

Catégories

En savoir plus sur 2-D and 3-D Plots dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by