我必须在一个绘图窗口中绘制1个线图和3个分组的散点图。
以下是我尝试过的代码,
figure;
t1=0:0.1:10;
X = 2*sin(t1);
ts = 0:1:10;
Y1 = randi([0 1],length(ts),1);
Y2 = randi([0 1],length(ts),1);
Y3 = randi([0 1],length(ts),1);
plotyy(t1,X,[ts',ts',ts'],[Y1,Y2,Y3],'plot','scatter');
%plotyy(t1,X,[ts',ts',ts'],[Y1,Y2,Y3],'plot','plot');
以下是我的问题,
如果我将“散点图”替换为“绘图”(见注释行),则以上代码有效,但是“散点图”仅适用于1个数据集而不适用于3个。
如何分别为3个分组的散点图或散点图分配颜色?
阅读收到的错误消息:
使用散点图(第44行)时出错X和Y必须是相同长度的向量。
如果您查看文档,scatter
将会发现输入必须是向量,并且您正在尝试传递数组。
一种选择是堆叠向量:
plotyy(t1,X,[ts';ts';ts'],[Y1;Y2;Y3],'plot','scatter');
但是我不知道这是否是您要寻找的东西,它肯定看起来不像注释行。您必须澄清最终绘图的外观。
至于第二个问题,老实说,我建议不要使用plotyy
。我可能有偏见,但根据我的口味我发现它已经很挑剔。我想使用的方法是堆叠多个轴并绘制到每个轴上。这使我可以完全控制所有图形对象和图形。
例如:
t1=0:0.1:10;
X = 2*sin(t1);
ts = 0:1:10;
Y1 = randi([0 1],length(ts),1);
Y2 = randi([0 1],length(ts),1);
Y3 = randi([0 1],length(ts),1);
% 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
h.plot(1) = plot(h.ax1, t1, X);
h.scatter(1) = scatter(h.ax2, ts', Y1);
h.scatter(2) = scatter(h.ax2, ts', Y2);
h.scatter(3) = scatter(h.ax2, ts', Y3);
给你:
现在,您可以完全控制所有轴和线属性。请注意,这假设您具有R2014b或更高版本,以便使用点表示法访问的Position
属性h.ax1
。如果您运行的是旧版本,则可以get(h.ax1, 'Position')
改用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句