在Matlab中向色标添加附加标签

问题描述

我正在使用Matlab(R2013b版),并制作了一张欧洲网格化地图,其中每个网格正方形都有儒略日值(严格来说不是儒略日;而是从1月1日开始的天。即1月3日为3, 1月5日是5,依此类推)。 我绘制了这些数据,然后使用colorbar来说明正在显示的日期。这将产生一个带有颜色栏右侧数字间隔的颜色栏。 是否可以在颜色栏的左侧添加其他信息,在“ 60”标记附近显示“ 2月”,在150标记附近显示5月?我在想我需要在颜色栏上创建另一个轴来做到这一点?

这是我用来绘制情节的代码

surf(meshlon,meshlat,wrf_data(:,:,1),'FaceColor','none','EdgeColor','k');view(2);
    hold on;
    %Plot jd
    surf(meshlon,budburst(:,cordexcntr)),'linestyle','none';view(2);
    %reduce the size of the plot to encompass the data
    lat1=wrf_rlat(1);
    latend=wrf_rlat(length(wrf_rlat));
    set(gca,'YLim',[lat1 latend])
    lon1=wrf_rlon(1);
    lonend=wrf_rlon(length(wrf_rlon));
    set(gca,'XLim',[lon1 lonend])
   
    %get rid of labels
    set(gca,'xticklabel',[])
    set(gca,'yticklabel',[])
    Box on
    caxis([0 365]);
    h=colorbar;
    ylabel(h,'Julian Day of Budburst');

这是情节的样子:

enter image description here

解决方法

您可以将颜色栏的刻度标记设置为与每个月的第一天相对应的日期,然后使用合适的字符串更改相应的刻度标记。例如:

ndays = [31,28,31,30,31];
% Where to put the tick marks:
ticks = [1,cumsum(ndays(1:end-1))];
% What to put at each tick mark:
labels = {'Jan 1','Feb 1','Mar 1','Apr 1','May 1','Jun 1','Jul 1','Aug 1','Sep 1','Oct 1','Nov 1','Dec 1'}; 

caxis([1,sum(ndays)]); % [1,365],not [0,365]
h = colorbar;
set(h,'Ticks',ticks,'TickLabels',labels);
ylabel(h,'Julian Day of Budburst');

(请注意,此功能尚未在R2013b中进行测试,自那时以来,MATLAB图形引擎已进行了大修,从而改变了某些图形功能。)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...