在matlab中绘制多坐标轴、多个y轴,详细注释
以需要绘制4个y轴为例,其中一条为主坐标系左边界、一条为主坐标系右边界,剩余两条在最右侧按一定间隔摆放。
绘制这种形式的坐标系实际上是绘制了四个坐标系,只是右侧三个y轴的坐标系除了y轴以外的其他部分,都变成了透明。下面是原始数据:
x = 1:16;
c0 = [2.34,2.61674,2.60416,3.00439,2.04946,2.972,2.466, ...
2.54408,2.52893,2.36583,2.75612,3.13151,3.044,3.01283 ...
,2.50254,2.86092];
R1 = [845.145,638.911,580.587,503.789,465.654,475.064, ...
517.07,594.854,601.167,458.359,793.633,571.344,737.367, ...
505.613,713.112,736.116];
L1 = [165.601,124.853,102.892,93.3,157.67,99.9744,111.084, ...
198.83,178.872,124.708,108.312,75.3015,153.643,109.335, ...
130.754,121.486];
C1 = [126.487,170.536,209.483,229.089,139.99,210.657, ...
188.547,107.363,110.459,168.741,194.123,283.169, ...
137.212,197.114,166.146,173.119];
先对数据进行归一化,归一化是将数据缩放到一个特定范围内,不改变数据的分布形态,将R1
、L1
、C1
进行归一化;然后进行反归一化,以c0
为参照,这样数据的变化趋势是以c0
为参照,可以方便地在同一幅图像中看出数据的变化趋势。
%% 归一化
R1_0 = guiyi(R1);
L1_0 = guiyi(L1);
C1_0 = guiyi(C1);
%% 反归一化
R1_1 = fanguiyi(R1_0, c0);
L1_1 = fanguiyi(L1_0, c0);
C1_1 = fanguiyi(C1_0, c0);
反归一化之后的数据就是后续代码可以直接使用的数据,将这些数据在同一幅图像中进行绘制。
%% 同一个画面中,绘制四条曲线
figure;
h1 = axes('Position',[0.1 0.1 0.65 0.8]); %定义坐标轴的位置
hold on
plot(x, c0, 'ko-','LineWidth',1.5);
plot(x, R1_1,'*-','Color',[0 0.4470 0.7410],'LineWidth',1.5);
plot(x, L1_1,'s-','Color',[0.9290 0.6940 0.1250],'LineWidth',1.5);
plot(x, C1_1,'x-','Color',[0.4660 0.6740 0.1880],'LineWidth',1.5);
legend('c0', 'R1', 'L1', 'C1');
h1.YAxis.LineWidth = 2; %设置第一个坐标轴粗细
h1.XAxis.LineWidth = 2;
xlabel('负载编号');
ylabel('c0(nF)');
hold off
这样就绘制出了四条曲线。绘制完所有的曲线之后,后续就需要对坐标轴进行绘制,要知道图像和坐标轴是分开画的(除了主轴)。重新设置后面三幅坐标系的位置,在坐标系中分别绘制R1
、L1
、C1
的曲线,此时绘制的目的只是为了获取到纵轴,除了纵轴以外,其他的都设置为透明,包括曲线、横轴、其他的边,另外将坐标系的纵轴设置在右侧。
%% 指定坐标轴
%第二条坐标轴
h2 = axes('Position', [0.75 0.1 0.005 0.8]); %%设置坐标系位置
hold on
plot(x, R1, 'Color','none'); %将图像绘制为透明,因为图像在前面已经绘制过了,这里只是绘制出数据的变化范围。
set(h2, 'YAxisLocation', 'right', 'Color', 'none', 'XColor', 'none', 'xtick', [], 'YColor', [0 0.4470 0.7410]); %将坐标系除了右轴以外,其余全变为透明
h2.YAxis.LineWidth = 2;
ylabel('R1(Ω)');
box off
%第三条坐标轴
h3 = axes('Position', [0.8 0.1 0.005 0.8]);
plot(x, L1, 'Color', 'none');
set(h3, 'YAxisLocation', 'right', 'Color', 'none', 'XColor', 'none', 'xtick', [], 'YColor', [0.9290 0.6940 0.1250]);
h3.YAxis.LineWidth = 2;
ylabel('L1(mH)');
box off
%第四条坐标轴
h4 = axes('Position', [0.85 0.1 0.005 0.8]);
plot(x, C1, 'Color', 'none');
set(h4, 'YAxisLocation', 'right', 'Color', 'none', 'XColor', 'none', 'xtick', [], 'YColor', [0.4660 0.6740 0.1880]);
h4.YAxis.LineWidth = 2;
ylabel('c1(pF)');
box off
hold off
以上,就是绘制多个y轴的逻辑。
全部代码
clear; clc; close all
%% C0
x = 1:16;
c0 = [2.34,2.61674,2.60416,3.00439,2.04946,2.972,2.466, ...
2.54408,2.52893,2.36583,2.75612,3.13151,3.044,3.01283 ...
,2.50254,2.86092];
R1 = [845.145,638.911,580.587,503.789,465.654,475.064, ...
517.07,594.854,601.167,458.359,793.633,571.344,737.367, ...
505.613,713.112,736.116];
L1 = [165.601,124.853,102.892,93.3,157.67,99.9744,111.084, ...
198.83,178.872,124.708,108.312,75.3015,153.643,109.335, ...
130.754,121.486];
C1 = [126.487,170.536,209.483,229.089,139.99,210.657, ...
188.547,107.363,110.459,168.741,194.123,283.169, ...
137.212,197.114,166.146,173.119];
%% 归一化
R1_0 = guiyi(R1);
L1_0 = guiyi(L1);
C1_0 = guiyi(C1);
%% 反归一化
R1_1 = fanguiyi(R1_0, c0);
L1_1 = fanguiyi(L1_0, c0);
C1_1 = fanguiyi(C1_0, c0);
%% 同一个画面中,绘制四条曲线
figure;
h1 = axes('Position',[0.1 0.1 0.65 0.8]); %定义坐标系的位置
hold on
plot(x, c0, 'ko-','LineWidth',1.5);
plot(x, R1_1,'*-','Color',[0 0.4470 0.7410],'LineWidth',1.5);
plot(x, L1_1,'s-','Color',[0.9290 0.6940 0.1250],'LineWidth',1.5);
plot(x, C1_1,'x-','Color',[0.4660 0.6740 0.1880],'LineWidth',1.5);
legend('c0', 'R1', 'L1', 'C1');
h1.YAxis.LineWidth = 2; %设置第一个坐标轴粗细
h1.XAxis.LineWidth = 2;
xlabel('负载编号');
ylabel('c0(nF)');
hold off
%% 指定坐标轴
%第二条坐标轴
h2 = axes('Position', [0.75 0.1 0.005 0.8]); %%设置坐标系位置
hold on
plot(x, R1, 'Color','none'); %将图像绘制为透明,因为图像在前面已经绘制过了,这里只是绘制出数据的变化范围。
set(h2, 'YAxisLocation', 'right', 'Color', 'none', 'XColor', 'none', 'xtick', [], 'YColor', [0 0.4470 0.7410]); %将坐标系除了右轴以外,其余全变为透明
h2.YAxis.LineWidth = 2;
ylabel('R1(Ω)');
box off
%第三条坐标轴
h3 = axes('Position', [0.8 0.1 0.005 0.8]);
plot(x, L1, 'Color', 'none');
set(h3, 'YAxisLocation', 'right', 'Color', 'none', 'XColor', 'none', 'xtick', [], 'YColor', [0.9290 0.6940 0.1250]);
h3.YAxis.LineWidth = 2;
ylabel('L1(mH)');
box off
%第四条坐标轴
h4 = axes('Position', [0.85 0.1 0.005 0.8]);
plot(x, C1, 'Color', 'none');
set(h4, 'YAxisLocation', 'right', 'Color', 'none', 'XColor', 'none', 'xtick', [], 'YColor', [0.4660 0.6740 0.1880]);
h4.YAxis.LineWidth = 2;
ylabel('c1(pF)');
box off
hold off
标签:none,R1,Color,坐标轴,matlab,L1,C1,LineWidth,绘制
From: https://blog.csdn.net/zhangxuezhi123123/article/details/144582603