我希望我的图例包含绘图中的线条和散点图中的标记。例如,
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');
此代码仅使用绘图中的短划线创建图例,而不是散点图中的点。我希望图例中的点和虚线都在同一个标签上。类似" -.-"
非常感谢任何帮助。 感谢。
答案 0 :(得分:1)
为图例创建一个没有数据(nan
)的虚拟图表(同样,如您所见,您可以通过一次调用plot
来绘制所有元素:
p = plot(nan,nan,'--ok', xx,yy,'--k', x,y,'ok');
set(p,{'MarkerFaceColor'},{'k'}); % fill the circles
legend('x1');
结果:
Ins 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';
,请尝试查看会发生什么。
答案 1 :(得分:0)
MATLAB中的图例是包含相同基本对象(如线条和文本)的附加轴。
如果你想绘制自定义图例,简单的方法是使用原始命令line
,text
和patch
来填充矩形。您还可以添加一个轴对象作为容器。
答案 2 :(得分:0)
通过在图例命令中指定FourthActivity
,您告诉MATLAB只在图例中插入与句柄p1
对应的行的项目 - 这就是您所看到的。
在您的示例中,您只需要
p1