matlab对柱状图的平移保持y刻度不变,给出精细修改和实例

文摘   2024-09-28 20:14   德国  

matlab对柱状图的平移保持y刻度不变,给出精细修改和实例


问题是这样的,双坐标图表示也没问题!但是不想让他们重合,说在上x轴画柱状图,下方画折线图:

这样表示也能懂,但是想要下面这样:但是不想让他们重合,说在上x柱状图,下方画折线图:如下

移动的距离可以根据实际情况安排:


解决思路,柱状图平移:

于是搜到柱状图有个基线画法:doc bar可以看到。

但是他的坐标轴刻度更改了。不是零开始了。于是基于此,作出如下更改!


图表中的所有条形序列具有相同的基线。通过设置任一条形序列的 BaseValue 属性将基线的值更改为 2。使用圆点表示法设置属性。

但是他的坐标轴刻度更改了。不是零开始了。于是基于此,作出如下更改!

两步:


第一步骤:

% 这里备注,数据加上13,代表数据往上平移的距离,为了和折线避开

sst_ano=sst_ano+30,元数据加上一个平移的距离

x1(1).BaseValue = 30;% 基准线更改,和平移距离保持一致:

x1=bar(year,sst_ano+30,0.2,"grouped","LineWidth",2,'FaceColor',[0.8 0.8 0.8]);x1(1).BaseValue = 30;% 这里的13和上面保持一致,为了从那里开始画图x1(1).BaseLine.LineStyle = '-';% 这里和下面三个设置基础线条,x1(1).BaseLine.Color = 'k';x1(1).BaseLine.LineWidth = 1;

第二步骤:

自己重新设置ytick以及yticklabel.

set(gca,'ytick',25:1:35,'YTickLabel',25-30:1:35-30)% 这里是对y刻度重新设置,因为数据往上平移30,因此,在标注刻度时候,减去30,就等于真实数。

结果:


数据和代码如下:

clc,clear;% 构造数组,数据sst_ano=[-1 -1 -3 1 3 4 -1 -2 2 -4 5 -3 -1 2 -1 -5 1 -2];PC=[0.550000000000000  0.660000000000000  0.690000000000000  0.600000000000000  0.710000000000000  0.540000000000000  0.520000000000000  0.690000000000000  0.550000000000000  0.560000000000000  0.520000000000000  0.560000000000000  0.590000000000000  0.600000000000000  0.650000000000000  0.500000000000000  0.540000000000000  0.540000000000000];year  = 2005:2022;%% picture one no adjust_没有调整的图片close allfigureset(gcf,'position',[50 50 1250 850],'color','w')yyaxis left% 这里给你备注,数据加上13,代表数据往上平移的距离,为了和折线避开x1=bar(year,sst_ano,0.2,"grouped","LineWidth",2,'FaceColor',[0.8 0.8 0.8]);set(gca,'ytick',-6:2:6,'YTickLabel',-6:2:6)% 这里是对y刻度重新设置,因为数据往上平移13,因此,在标注刻度时候,减去13,就等于真实数。set(gca,'xtick',[2005:5:2022],'xticklabel',2005:5:2022)%x轴刻度ylim([-6 6]);ylabel('SST Ano','color','k');set(gca,'fontsize',12,'fontname','宋体','fontweight','bold','linewidth',2,'ycolor','k')box offyyaxis righty1=plot(year,PC,'-','color','r','linewidth',1.5);hold on;ylim([0.45 0.75]);set(gca,'ytick',0.45:0.05:0.75,'YTickLabel',0.45:0.05:0.75);set(gca,'XColor','k','YColor','r');box onxlabel('年份');ylabel('PC of eof','color','r');set(gca,'fontsize',12,'fontname','宋体','fontweight','bold','linewidth',2)export_fig('未移动的图片.jpg')%% picture one have adjust_调整的图片close allfigureset(gcf,'position',[50 50 1250 850],'color','w')yyaxis left% 这里给你备注,数据加上13,代表数据往上平移的距离,为了和折线避开x1=bar(year,sst_ano+17,0.2,"grouped","LineWidth",2,'FaceColor',[0.8 0.8 0.8]);x1(1).BaseValue = 17;% 这里的13和上面保持一致,为了从那里开始画图x1(1).BaseLine.LineStyle = '-';% 这里和下面三个设置基础线条,x1(1).BaseLine.Color = 'k';x1(1).BaseLine.LineWidth = 1;set(gca,'ytick',12:1:22,'YTickLabel',12-17:1:22-17)% 这里是对y刻度重新设置,因为数据往上平移13,因此,在标注刻度时候,减去13,就等于真实数。set(gca,'xtick',[2005:2:2022],'xticklabel',2005:2:2022)%x轴刻度ylim([10 22]);posy=ylabel('SST ano','color','k');posy1 = get(posy,'position');posy1(2)=posy1(2)+1;set(posy,'position',posy1)set(gca,'fontsize',12,'fontname','宋体','fontweight','bold','linewidth',2,'ycolor','k')box offyyaxis righty1=plot(year,PC,'-','color','r','linewidth',1.5);hold on;ylim([0.4 1.4]);set(gca,'ytick',0.4:0.1:0.7,'YTickLabel',0.4:0.1:0.7);set(gca,'XColor','k','YColor','r');box onxlabel('年份');posyy=ylabel('PC of eof','color','r');posyy1 = get(posyy,'position');posyy1(2)=posyy1(2)-0.3;set(posyy,'position',posyy1)set(gca,'fontsize',12,'fontname','宋体','fontweight','bold','linewidth',2)export_fig('移动的图片1.jpg')



海洋与大气科学
海洋与大气科学数据分析,数据可视化分享,可教学。
 最新文章