我有以下代码。我试图用两个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);
答案 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.Position
与get(h.ax1, 'Position')
交换。
Color
和YAxisLocation
来电应该是自我解释的。
我使用hold
来保存轴格式。如果您不包含这些并绘制数据,它将重置背景颜色和轴位置,要求您重新调整它们。
希望这有帮助!
答案 1 :(得分:0)
从Matlab 2016a开始,您还可以使用新功能yyaxis
。 documentation的示例:
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])