为什么matlab text()在图中显示了一个带有我的字符串的matrice(特殊字符)

时间:2016-02-25 09:15:18

标签: matlab matlab-figure

我遇到MATLAB的问题:我想在图中显示文字(颜色栏的标题),特殊字符作为索引,希腊字母。在显示屏上,索引以矩阵形式出现(见图片),我不明白为什么。

enter image description here

enter image description here

有人已经有这个问题,可以帮助我吗?

我尝试创建一个GUI。所以我的代码很长,但我会尽力解释你。 当我称之为不同的伟大时,我有一个变量G_nom会发生变化:  G_nom = '{\它\ sigma_u} *';

接下来调用绘制图形的函数:

%
function figure_exp_num(source,callbackdata) 


global Grandeur G g Verticale Horizontale EXP_graphique NUM_graphique M
global M_Int G_Num_Int YI ZI Adim x Q position d S U_debit YCercle ZCercle
global cmin cmax cmin_auto cmax_auto Valeur_perso_colorbar G_map  G_nom
global valeur_min_colorbar valeur_max_colorbar f h1 h2 h3 h11 h22 hcb
global y_Num z_Num points_exp points_num Exp_contour Num_contour Exp_contour_1
global Nb_ISO G_nom_indice Titre

%f=figure('units','centimeters','Position',[9 2 25 15],'Visible', 'on','renderer','painters');
clf(f,'reset')
set(f,'Visible','on','Position',[9 2 23 15])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
h1=subplot(2,2,1,'Parent',f,'units','centimeters');
assignin('base','h1',h1);

% Variable à tracer
%-------------------------------------------------------------------------   
G_map=M_Int(:,:,G);
assignin('base','G_map',G_map);

% Affichage du graphique
%-------------------------------------------------------------------------
h11=pcolor(YI,ZI,G_map);
assignin('base','h11',h11);


% Ajout du Cercle représentant la conduite/ point EXP ou NUM
%-------------------------------------------------------------------------- 
hold on
    plot(YCercle, ZCercle,'k-','LineWidth',4.0);             %Tracé du cercle (conduite)
    points_exp=plot(M(:,2),M(:,3),'k+','Visible', 'off');    %Tracé des points expérimentaux
    [Exp_contour_valeur,Exp_contour]=contour(YI,ZI,G_map,Nb_ISO,'k-',...
        'LineWidth', 1.5,'Visible', 'off');                  %Courbe iso de la grandeur
hold off

assignin('base','Exp_contour',Exp_contour);    
% Caractéristiques du graphique :
%-----------------------------------

% recherche du min et max automatique du graphique
%--------------------------------------------------
[cmin_auto,cmax_auto] = caxis;
assignin('base','cmin_auto',cmin_auto);
assignin('base','cmax_auto',cmax_auto);

cmin=cmin_auto;
cmax=cmax_auto;
assignin('base','cmin',cmin);
assignin('base','cmax',cmax);

% Borne de la colorbar
%------------------------------   
caxis([cmin_auto,cmax_auto])
set(valeur_min_colorbar,'string',num2str(cmin_auto,'%.3f'),...
    'BackgroundColor',[1 0.5 0]);
set(valeur_max_colorbar,'string',num2str(cmax_auto,'%.3f'),...
    'BackgroundColor',[1 0.5 0]);

axis equal;                 % axes de même longueur
axis([min(YCercle)-0.02 max(YCercle)+0.02 min(ZCercle)-0.02 max(ZCercle)+0.02])
shading(gca,'interp')       %lissage de l'interpolation

% Titre du Subplot Expérimentale et des Axes du graphique
%--------------------------------------------------------------------------
title('Exp');

if Adim==1
    xlabel ('\ity*');ylabel ('\itz*');
        set(gca,'YTick',[-0.5:0.1:0.5]) 
        set(gca,'XTick',[-0.5:0.25:1])
else
    xlabel ('y (mm)');ylabel ('z (mm)');
end


h2=subplot(2,2,2,'Parent',f,'units','centimeters');
assignin('base','h2',h2);

%Variable à tracer et GRAPH
%------------------------------------------------------------------------- 
h22=pcolor(YI,ZI,G_Num_Int(:,:,g));
assignin('base','h22',h22);

% Ajout du Cercle représentant la conduite/ point EXP ou NUM
%--------------------------------------------------------------------------        
hold on
    plot(YCercle, ZCercle,'k-','LineWidth',4.0);            %Tracé du cercle (conduite)
    points_num=plot(y_Num,z_Num,'k+','Visible', 'off');     %Tracé des points numérique
    [Num_contour_valeur,Num_contour] = contour(YI,ZI,G_Num_Int(:,:,g),Nb_ISO,'k-','LineWidth', 1.5,'Visible','off');            %Courbe iso de la grandeur
hold off
assignin('base','Num_contour',Num_contour);

% Caractéristiques du graphique
%--------------------------------------------------------------------------
    axis equal;
    axis([min(YCercle)-0.02 max(YCercle)+0.02 min(ZCercle)-0.02 max(ZCercle)+0.02]);
    shading interp;
% min et max de la colorbar du graphique = à celui de l'EXP
%-----------------------------------------------------------     
    caxis([cmin,cmax])

% Titre du Subplot Expérimentale et des Axes du graphique
%------------------------------------------------------------

    title('Num');
    if Adim==1
        xlabel ('\ity*');ylabel ('\itz*');
            set(gca,'YTick',[-0.5:0.1:0.5]) 
            set(gca,'XTick',[-0.5:0.25:1])
    else
        xlabel ('y (mm)');ylabel ('z (mm)');
    end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
h3=subplot(2,2,[3 4],'Parent',f,'units','centimeters');
assignin('base','h3',h3);

axis off;                       %N'affiche pas le graphique
caxis([cmin,cmax])              %borne de la colorbar
hcb=colorbar('southoutside');   %Orientation de la colorbar

title(hcb,G_nom);               %titre de la colorbar
%ylabel(hcb,G_nom);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Positionnement des subplots dans la fenêtre graphique
%------------------------------------------------------
set(h1,'position',[2,5.5,10,8])     %Position du Subplot1 : Exp
set(h2,'position',[13,5.5,10,8])    %Position du Subplot2 : Num
set(h3,'position',[3,3.2,18.6,5])       %Position du Subplot3 : 
end

2 个答案:

答案 0 :(得分:2)

这是我在Windows上尝试将colormap设置为我的绘图时常见的探测器。我不知道从哪里来,但我通过以下方式解决了这个问题(在情节之后):

set(gcf, 'Renderer', 'OpenGL');
opengl software;

答案 1 :(得分:2)

我自己曾经遇到过这个问题几次,switching to software OpenGL rendering as Holt suggests是它的典型解决方案。这里有更多的背景知道为什么这通常是解决方案...

数字窗口具有'Renderer''RendererMode'属性。 'RendererMode'属性默认设置为'auto',这意味着MATLAB将根据显示的图形对象的复杂性确定图形的最佳图形渲染器。例如,如果绘制任何透明对象,则将自动使用OpenGL渲染,因为其他渲染器选项('painters''zbuffer')不支持透明对象的渲染。 注意:在旧版本的MATLAB中,默认渲染器为'painters',但默认情况下较新版本似乎使用OpenGL渲染,并且'zbuffer'渲染选项已被删除。

现在,可以使用opengl命令进一步控制OpenGL渲染。具体来说,您可以选择软件或硬件OpenGL渲染。这是什么意思?好吧,显卡通常有专用的板载硬件,可以处理渲染复杂图形所涉及的一些计算,使用这些硬件可以加速图形渲染。但是,由于您的图形卡,图形驱动程序,操作系统或MATLAB安装存在不兼容问题,有时会出现错误(如图所示)(文档对象在图像中复制,我亲眼看过几次)

我在这种情况下找到的唯一解决方案是切换到软件OpenGL渲染,这可能稍微慢一点,但避免了由不兼容的硬件引起的错误。你也可以尝试updating your graphics drivers,但是当我遇到这个问题时,这对我来说从来没有用过(我的司机已经是最新的)。

此外,您可能需要进行设置,以便MATLAB始终默认使用软件OpenGL。这需要您使用opengl设置您的首选项(我相信只在较新版本的MATLAB中设置)或者将以下行添加到startup.m file

opengl software