【问题标题】:Change the color of x and y axis of a graph from a GUI in MATLAB从 MATLAB 中的 GUI 更改图形的 x 和 y 轴的颜色
【发布时间】:2014-03-15 17:54:13
【问题描述】:

我正在尝试更改我在 MATLAB GUIDE 中创建的图形的颜色。我最初在 GUIDE 中将 x 轴和 y 轴的颜色设置为白色,但每当我输出到图形时,两个轴的颜色都会变回默认值,即黑色。这是我用来输出图表的代码:

axes(handles.axes1); % axes1 is the tag for my graph in GUIDE
time = 0:1/fs:(length(handles.x)-1)/fs;
plot(time,handles.x);
title('Original Signal');

我查看了 MATLAB 文档,但没有找到与我的问题相关的示例,因为它不是我想要颜色更改的实际图形,而是 x 和 y 轴。这可能吗?

【问题讨论】:

    标签: matlab colors plot matlab-guide


    【解决方案1】:

    一些研究

    感谢 OP 的问题,我今天学到了一些新东西。所以,我知道也可以通过代码更改坐标轴的 XColor,使用命令 - set(handles.axes1,'XColor',colorname),其中 colorname 可以是任何颜色,例如“r”代表红色,“k”代表黑色等。所以,我会建议使用set(handles.axes1,'XColor',’w’),但必须记住XColor 是通过GUIDE 设置的,并将该信息复制到关联的M 文件中,这还不够“优雅”。

    我最初的想法是在 GUI 的初始化阶段从 Fig-file 中提取 XColor 信息,即GUINAME_ OpeningFcn,将其保存到句柄结构中,然后通过句柄在回调函数中使用它再次。我尝试在此函数末尾调用 color_data = get(handles.axes1,'XColor') 以将 XColor 信息作为三元素向量。这不起作用,因为它给了我 [1 1 1] 代表默认颜色白色。

    下一个明显的事情是将 color_data 提取命令放在 GUINAME_ OpeningFcn 的开头,然后在该函数中设置 handles.output 并且它起作用了!因此,结论是handles.output = hObject 至少将Color 信息设置为默认值。

    回去工作

    对于 OP,步骤如下:

    把这个放在GUINAME_OpeningFcn的开头

    axes1_XColor = get(handles.axes1,'XColor');
    axes1_YColor = get(handles.axes1,'YColor');
    
    handles.axes1_XColor = axes1_XColor;
    handles.axes1_YColor = axes1_YColor;
    
    set(handles.axes1,'XColor',handles.axes1_XColor);
    set(handles.axes1,'YColor',handles.axes1_YColor);
    

    在以handles 作为输入之一的任何函数内绘图时,请在绘图后使用以下命令

    set(handles.axes1,'XColor',handles.axes1_XColor);
    set(handles.axes1,'YColor',handles.axes1_YColor);
    

    因此,对于您的示例,它将是 –

    axes(handles.axes1); % axes1 is the tag for my graph in GUIDE
    time = 0:1/fs:(length(handles.x)-1)/fs;
    plot(time,handles.x);
    title('Original Signal');
    
    set(handles.axes1,'XColor',handles.axes1_XColor);
    set(handles.axes1,'YColor',handles.axes1_YColor);
    

    希望它对你有用,让我们知道!

    【讨论】:

    • 是的,效果很好。非常感谢您的解释。
    【解决方案2】:

    调用像plot() 这样的高级绘图函数会将坐标区属性重置为其默认值。要保留您的自定义属性,请改用line() 函数:

    axes(handles.axes1);
    time = 0:1/fs:(length(handles.x)-1)/fs;
    line(time,handles.x);
    title('Original Signal'); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      相关资源
      最近更新 更多