在 MATLAB 中创建包含散点图和正态图的图例

Posted

技术标签:

【中文标题】在 MATLAB 中创建包含散点图和正态图的图例【英文标题】:Creating a legend in MATLAB that includes scatter plots and normal plots 【发布时间】:2018-04-04 05:23:42 【问题描述】:

我希望我的图例包含绘图中的线和散点图中的标记。例如,

rest = importdata('test.xlsx');

x = test.data(:,1);
y = test.data(:,2);

xx = min(x):0.001:max(x); 
yy = interp1(x,y,xx,'cubic');

figure
s1 = scatter(x,y, 'filled', 'k');
hold on
p1 = plot(xx,yy, '--k');

legend(p1, 'x1');

此代码仅使用绘图中的破折号而不是散点图中的点创建图例。我希望图例在同一标签上同时具有点和虚线。类似“-.-”的东西

非常感谢任何帮助。 谢谢。

【问题讨论】:

看:1234,图例的一些自定义 【参考方案1】:

选项 1

为图例制作一个没有数据 (nan) 的虚拟图(此外,正如您在此处看到的,您可以通过一次调用 plot 来绘制所有元素:

p = plot(nan,nan,'--ok', xx,yy,'--k', x,y,'ok');
set(p,'MarkerFaceColor','k'); % fill the circles
legend('x1');

结果:

选项 2

legend(p1, 'x1');,写下这个:

[~,ico] = legend(p1,'x1'); % create the legend, and get handels to it's parts
ico(3).Marker = 'o'; % set the marker to circle 
ico(3).MarkerFaceColor = 'k'; % set it's fill color to black

ico 是:

  3×1 graphics array:

  Text    (x1)
  Line    (x1)
  Line    (x1)

第一个元素是图中的文本'x1'。第二个元素是虚线,第三个是 p1 的(不存在的)标记。这第三个元素是为像plot(xx,yy,'--ok'); 这样的情况保留的,其中图例包括标记和线,但线(在图例中)用两个点表示,而标记只有一个,所以我们他们需要不同的对象。试着看看如果你在上面的例子中输入ico(2).Marker = 'o';会发生什么。

【讨论】:

【参考方案2】:

MATLAB 中的图例是包含相同原始对象(如线条和文本)的附加轴。 如果您想绘制自定义图例,简单的方法是使用原始命令linetextpatch 填充矩形。此外,您还可以添加一个轴对象作为容器。

【讨论】:

【参考方案3】:

通过在 legend 命令中指定 p1,您告诉 MATLAB 仅在图例中插入与句柄 p1 对应的行的项目 - 这就是您所看到的。

在您的示例中,您只需要

>>legend('label_for_scatter','label_for_plot');

【讨论】:

以上是关于在 MATLAB 中创建包含散点图和正态图的图例的主要内容,如果未能解决你的问题,请参考以下文章

我们如何根据颜色标记散点图的图例

如何用matlab 画散点图 如何标记数据点的颜色

如何修改散点图图例以显示相同类型句柄的不同格式?

如何在使用 r 中的符号()命令更新散点图后添加图例

如何将excel的一组数据既做成散点图又做成条状图,意思就是散点图和条状图在一个图里

如何根据散点图用MATLAB拟合函数图象?