用两个y轴创建一个xy图

时间:2015-02-20 17:07:36

标签: matlab plot

我有以下代码。我试图用两个y轴创建一个xy图。但是我只从中间得到一条线。我希望y是右边的垂直轴,而vel是左边的垂直轴。我有不同位置的几组数据,我试图将第一组放在x轴上的0.66,第二组放在1等,但我不能让它工作。请帮助。

此致 耶

clc
    clear


%Retrieve data and figure setup
filename = 'G:\Protable Hard Drive\PHD Hard Drive\Experimental Data\Bulkrename Trial\Common data for line graphs\Data for line graphs.xls';
a = xlsread(filename, 'Veldef');
vel = 0:1/37:1;
y = -16/15:1/15:21/15;

%X/D=0.66 TSR5
x = 0.66;
exp = a(1:38,2);
ko = a(1:38,4);
rst = a(1:38,6);

%Plot
h = plot(x,exp,x,ko,x,rst);

2 个答案:

答案 0 :(得分:1)

一个选项是plotyy()

x = 1:10;
y = rand(1,10);
plotyy(x, x, x, y)

更灵活的选择是覆盖两个(或更多)轴并指定您想要在每个轴上绘制的数据。

% Sample data
x = 1:10;
y = rand(1,10);

% Create axes & store handles
h.myfig = figure;
h.ax1 = axes('Parent', h.myfig, 'Box', 'off');
h.ax2 = axes('Parent', h.myfig, 'Position', h.ax1.Position, 'Color', 'none', 'YAxisLocation', 'Right');

% Preserve axes formatting
hold(h.ax1, 'on');
hold(h.ax2, 'on');

% Plot data
plot(h.ax1, x, x);
plot(h.ax2, x, y);

Box属性会关闭每个轴周围的外部框的绘制。我建议除了其中一个轴之外的所有轴都要关闭它以消除轴嘀嗒杂乱。

Position属性将轴大小和位置设置为与第一个轴完全相同。请注意,我使用了R2014b中引入的点符号,如果您使用旧版本只需将h.ax1.Positionget(h.ax1, 'Position')交换。

ColorYAxisLocation来电应该是自我解释的。

我使用hold来保存轴格式。如果您不包含这些并绘制数据,它将重置背景颜色和轴位置,要求您重新调整它们。

希望这有帮助!

答案 1 :(得分:0)

从Matlab 2016a开始,您还可以使用新功能yyaxisdocumentation的示例:

x = linspace(0,10);
y = sin(3*x);
yyaxis left
plot(x,y)

z = sin(3*x).*exp(0.5*x);
yyaxis right
plot(x,z)
ylim([-150 150])

Resulting image