在 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 中的图例是包含相同原始对象(如线条和文本)的附加轴。
如果您想绘制自定义图例,简单的方法是使用原始命令line
、text
和patch
填充矩形。此外,您还可以添加一个轴对象作为容器。
【讨论】:
【参考方案3】:通过在 legend 命令中指定 p1
,您告诉 MATLAB 仅在图例中插入与句柄 p1
对应的行的项目 - 这就是您所看到的。
在您的示例中,您只需要
>>legend('label_for_scatter','label_for_plot');
【讨论】:
以上是关于在 MATLAB 中创建包含散点图和正态图的图例的主要内容,如果未能解决你的问题,请参考以下文章