我已经构建了一个绘图仪GUI,我可以使用它来加载数据文件,选择独立/因变量,并绘制多行。现在,当它覆盖多行时,它只是循环使用实线类型的Matlab默认颜色顺序。
我想在我的GUI中添加几个弹出菜单,为不同的曲线分配不同的颜色和线条类型(甚至线宽),如下面显示的Matlab Plot Tool(当然,不像这样花哨)。
出于某种原因,我无法附加图像来显示Matlab绘图工具,但基本上有一堆弹出菜单(也称为下拉菜单),包括线型,线宽和线条颜色;还有标记类型,标记大小和标记颜色。
我应该怎么做?我不能使用GUIDE,因为GUI的尺寸和选项会随着包含在其中的不同数据文件类型或参数类型而改变。当你遇到由GUIDE制作的GUI时(至少,这是我的理解),它是一个不同的GUI。
答案 0 :(得分:1)
可以使用uisetcolor
调用默认的MATLAB颜色选择框,它返回RGB三元组。如果指定输出到plot
,则可以修改绘制线的属性,而无需重新绘制。您可以在调用set
时使用uisetcolor
返回的RGB三元组,并修改您的情节的'Color'
。
以下是使用程序化GUI的一般示例:
function testcode
% Initialize GUI
handles.myfig = figure('MenuBar', 'none', ...
'Name', 'Sample GUI', ...
'NumberTitle', 'off', ...
'ToolBar', 'none', ...
'Units', 'Pixels', ...
'Position', [400 200 800 600] ...
);
handles.myaxes = axes('Parent', handles.myfig, ...
'Units', 'Normalized', ...
'Position', [0.35 0.1 0.6 0.8] ...
);
handles.myplot = plot(handles.myaxes, 1:10); % Plot dummy data
handles.colorbutton = uicontrol('Parent', handles.myfig, ...
'Style', 'pushbutton', ...
'Units', 'Normalized', ...
'Position', [0.05 0.1 0.2 0.8], ...
'String', 'Change Color' ...
);
set(handles.colorbutton, 'Callback', {@changecolor, handles});
end
function changecolor(~, ~, handles)
rgb = uisetcolor();
set(handles.myplot, 'Color', rgb);
end
对于GUIDE GUI,该过程或多或少相同,并为其他行属性创建自己的下拉列表。您可能还想参考MATLAB的Sharing Data Among Callbacks文档。
答案 1 :(得分:-1)
一般来说,我不确定这是GUI的问题。要更改绘图属性,可以检查绘图属性文档。
http://www.mathworks.com/help/matlab/ref/chartline-properties.html
例如,您可以使用虚线绘图:
plot(1:10, 'LineStyle', '--');