matlab - 用不同的标记和颜色绘制两个 y 轴

标签 matlab plot

如果我有两个 y 向量和一个 x 向量:

y1 = [0.1,0.2,0.5,0.6];
y2 = [0.3,0.4,0.7,0.8];
x = 1:length(y1);

如何使用不同的标记和不同的颜色在同一个图上绘制所有信息。我尝试过以下方法:

cols = {'k','r','b',[0,0.5,0]};
markers = {'s','o','d','v'};

for i = 1:4;
    plot(x(i),y1(i),markers{i},'color',cols{i},'MarkerEdgeColor',...
        cols{i},'MarkerFaceColor','w');
    hold on
end
ax1 = gca;
ax2 = axes('Position',get(ax1,'Position'),...
       'YAxisLocation','right','XColor','k','YColor','k');
linkaxes([ax1,ax2],'x'); 
for i = 1:4;
    plot(x(i),y2(i),markers{i},'color',cols{i},'MarkerEdgeColor',...
        cols{i},'MarkerFaceColor',cols{i},'Parent',ax2);
    hold on;  
end

但这似乎覆盖了第一个情节。我的目标是绘制前四个点 (y1),并定义标记和颜色,但制造商的面孔为白色。然后,我希望在同一个图上包含第二个 y 轴(右侧),其中包含 y2 的值​​,但这次标记面根据“cols”进行着色。我怎样才能做到这一点?

添加:

当我使用plotyy时

for i = 1:4;
    [ax,h1,h2] = plotyy(x(i),y1(i),x(i),y2(i));
    hold on
    set(h1,'linestyle','none','marker',markers{i},'MarkerEdgeColor',...
        cols{i},'MarkerFaceColor',cols{i});
    set(h2,'linestyle','none','marker',markers{i},'MarkerEdgeColor',...
        cols{i},'MarkerFaceColor','w');
    set(ax,{'ycolor'},{'k';'k'},{'xcolor'},{'k';'k'});
end

x 轴值未正确显示,尽管它们相同,但它们在绘图上并未对齐。

最佳答案

可以使用Matlab的内嵌函数plotyy

plotyy(X1,Y1,X2,Y2) 绘制 X1 与 Y1 的关系图,y 轴标签位于左侧,绘制 X2 与 Y2 的关系图,y 轴标签位于右侧。

检查更多选项here .

此示例使用绘图作为绘图函数来绘制两个数学函数的图表。两个 y 轴使您能够在一张图表上显示两组数据,即使数据的相对值截然不同。

figure
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');

如果您尝试使用“保持”,这可以解决 a 同步轴问题:

set(ax, 'XLim', [min(xaxis) max(xaxis)]);
set(ax(2),'XTick',[]);

enter image description here

关于matlab - 用不同的标记和颜色绘制两个 y 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18142386/

相关文章:

r - geom_errorbar 上为正均值,下为负均值

python-3.x - plot_decision_regions 错误 "Filler values must be provided when X has more than 2 training features."

ios - 核心剧情: Y axis label alignment with bars

python - 带有来自单独 2D 数组的值的彩色 2D 网格

Matlab:独特功能的行为

matlab - 从 MATLAB 中的文本文件加载值

matlab - 是否可以在 matlab 中对二值图像的单个连通分量进行着色?

matlab - 组合直方图和累积分布 Matlab

matlab - 使用 MATLAB 查找拉长的簇

R : How to detect and fix abnormal values on plot?