【问题标题】:Add aditional labels to colorbar in Matlab在 Matlab 中为颜色条添加附加标签
【发布时间】:2020-08-20 13:38:06
【问题描述】:

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

这是我用来制作情节的代码:

surf(meshlon,meshlat,wrf_data(:,:,1),'FaceColor','none','EdgeColor','k');view(2);
    hold on;
    %Plot jd
    surf(meshlon,meshlat,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');

这就是情节的样子:

【问题讨论】:

  • 我认为,如果您包含一小段用于创建彩条的独立代码,将会有所帮助。然后更容易向您展示如何修改它以获得您想要的结果。还包括您的图形窗口的屏幕截图可能会更清楚您到目前为止所拥有的内容。
  • 你能把数字换成日期吗?
  • 看看yticks我想这就是你要找的东西
  • 您可以直接将颜色条本身的刻度修改为您想要的描述。或者,text()annotate() 可用于在图形窗口中的任何位置绘制文本。
  • @CrisLuengo:完成。我已经更新了我的帖子

标签: matlab axis-labels colorbar


【解决方案1】:

您可以将彩条的刻度标记设置为每个月的第一天对应的天数,然后用合适的字符串更改对应的刻度标签。例如:

ndays = [31,28,31,30,31,30,31,31,30,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 图形引擎从那时起进行了大修,改变了一些图形功能。)

【讨论】:

  • 为了更轻松地自动执行此操作,请使用eomday(2019,1:12) 而不是写出一个月中的天数。闰年会自动以这种方式处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2023-03-25
  • 2019-01-12
  • 2021-07-08
相关资源
最近更新 更多