我遇到MATLAB的问题:我想在图中显示文字(颜色栏的标题),特殊字符作为索引,希腊字母。在显示屏上,索引以矩阵形式出现(见图片),我不明白为什么。
有人已经有这个问题,可以帮助我吗?
我尝试创建一个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
答案 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