Datetick ne montrant pas assez de marques de graduation dans l'intrigue
J'ai un code (ci-dessous) qui les parcelles simple en x, y de données. De mon temps (axe des x) a été à l'origine de nombres de 1-1257 qui correspond au nombre de jours que je regardais. J'ai converti cette série de dates afin de parcelle. Toutefois, lorsqu'il est tracée dans MATLAB, il n'y a pas assez d'étiquettes sur l'axe des abscisses. Quand j'ai essayer de mettre plus de marques de graduation, soit je obtenir les étiquettes de retour en format série (je veux 'mmm yyyy"), ou quand j'essaie NumTicks, je reçois beaucoup d'étiquettes, mais ils se trompent, car ils sont tout simplement les étiquettes d'origine répété plusieurs fois.
% Find indexes at which the lat and lon match the conditions
lon_ind = find(X(:,1) == 224); % Longitude closest to 136 03.56W
lat_ind = find(Y(1,:) == -66.75); % Latitude closest to 66 39.67S
% Pull out all the data at the point 2240W and 66.75
data_point = data_All(lon_ind, lat_ind, :);
t = 1:1257; % Days 1:1257 inclusive. 20100101 to 20130611
y = reshape(data_point,[],1); % Change data_point into a 1 column matrix
x = datenum(2009, 12, 31) + t; % Convert t into serial numbers
% str = datestr(x, 'mmm yyyy'); % Choose format for x-axis
plot(x, y); % Plot data
datetick('x','mmm yyyy','keeplimits', 'keepticks'); % Set parameters
% NumTicks = 30;
% L = get(gca,'XLim');
% set(gca,'XTick',linspace(L(1),L(2),NumTicks))
set(gca,'XMinorTick','on','YMinorTick','on'); % Add minor ticks (without labels)
Comment puis-je faire en sorte de l'axe des x a plus d'étiquettes dans le " mmm aaaa format?
OriginalL'auteur SugaKookie | 2013-06-24
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionnait très bien après la commutation de certains états autour de! Le truc, c'est d'abord augmenter le nombre de tiques, et puis appel datetick.
Avec 30 dateticks, les étiquettes sont bien sûr trop bondé pour toute bonne intrigue. Comme solution, j'ai téléchargé xticklabelrotate à partir du fichier d'échange.
Voici le code modifié. J'ai utilisé mannequin y-données de sorte que les autres puissent jouer avec un mécanisme d'exemple.
Le résultat ressemble à quelque chose comme ceci:
Pour toute application du monde réel, ne pas oublier d'étiqueter les axes! 🙂
MODIFIER
L'aide du code ci-dessus afin de répartir un certain nombre de xticks au cours d'une période donnée est une mauvaise idée, surtout lorsque combiné avec une date-format qui ne donne que de la date très "à peu près".
Au lieu de cela, vous devez placer votre tiques au début du mois, sinon le spectateur occasionnel sera induire en erreur.
La place, je propose d'utiliser ce code:
Ici, les étiquettes sont espacées de 1 mois d'intervalle entre octobre 2009 et jusqu'à 54 mois plus tard, ce qui correspond à juin 2013. (Nombres trouvés par essai et erreur.)
Les tiques sont maintenant toujours au début d'un mois, ce qui signifie que l'espace entre eux est un peu différent d'un mois à l'autre, comme il se doit. (28 jours en FÉVRIER-mars, 31 jours pour les MAR-AVR)
Pouvez-vous nous expliquer comment vous avez su utiliser datenum(2009,10:1:54,1);? Ce qui ne l'10:1:54,1 partie moyenne?
10:1:54
est le vecteur[10,11,12,..., 53, 54]
. À l'aide d'un vecteur dans une des entrées de ladatenum
, la sortie sera également un vecteur. Le nombre de 10 à 54 stand pour le mois de la date. Matlab est assez intelligent pour interpréter les mois entre 12 et 24 pour être "l'année prochaine", tout mois entre 24 et 36 "deux ans après", et ainsi de suite. Malheureusement, cela ne fonctionne pas pour le négatif mois.C'est génial, le seul truc c'est que je ne peut pas faire de XMinorTick de travailler avec: set(gca,'XMinorTick','sur','YMinorTick','on') . Pas de MinorTicks apparaissent sur x. Aucun indice?merci
Étrange, cela fonctionne pour moi, au moins lors de l'application de
XMinorTick
s de l'exemple ci-dessus.OriginalL'auteur Martin J.H.
Une solution rapide que j'ai utilisé pour ce problème est d'augmenter la largeur de la parcelle AVANT d'appliquer datetick.
La largeur de la parcelle peut ensuite être réduit si nécessaire.
Cette solution est un peu douteux fixer, et n'est pas aussi capables que Martin.
OriginalL'auteur Dean_me