matlab - Matlab线图:是否可以单独设置标记线宽度?
问题描述
有没有办法在 Matlab 图中分别设置标记线的宽度?
如果我们使用'LineWidth'
,它将改变标记边缘和线条本身的宽度。我们可以在两个单独的函数中绘制标记和线条plot
,但是在设置图例时会出现问题。
解决方案
这似乎是可能的,但它是无证的。
Line
对象有一个 hidden 属性MarkerHandle
,它引用一个Marker
表示绘制标记的对象;这个对象有它自己的LineWidth
属性。绘制标记后,Marker
对象的属性会独立于主对象上的LineWidth
属性影响标记线的宽度。这允许您执行以下操作:LineWidth
Line
hLine = plot(myData, 'Marker',myMarkerType, 'LineWidth',myMainLineWidth);
drawnow;
hLine.MarkerHandle.LineWidth = myMarkerLineWidth;
但是,此属性似乎不会影响图例中的行条目。不过,这也可以通过未记录的属性访问。
hLegend = legend;
drawnow;
lineEntry = findobj(hLegend.EntryContainer, 'Object',hLine);
entryMarker = findobj(lineEntry.Icon.Transform, 'Description','Icon Marker');
entryMarker.LineWidth = myMarkerLineWidth;
这在 MATLAB R2018b 中对我有用,但由于没有记录,因此无法保证结果会完全按照您的预期运行。特别是,您可能需要注意您的手动更改是否会被您使用记录的功能对绘图进行的其他更新自动覆盖,这些更新会导致重新绘制标记。
推荐阅读
- python - 如何通过删除从同一行检索到的值来转换数组的熊猫列
- python - 安装 Anaconda 时出错:initfsencoding:无法加载文件系统编解码器
- sympy - Sympy - 简化域内的表达式
- php - 从 WooCommerce 订单的产品属性中保存自定义交货日期
- conditional-statements - 创建表语句并添加条件以在 IMPALA 中将 None 值替换为 NULL
- ios - 如何在 Swift 中屏蔽 UIButton?
- node.js - Express 错误处理中间件最佳实践
- javascript - 下拉选项卡动画
- f# - F# 三参数中缀运算符
- django - Django为空字段注释StrIndex