WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Sonderzeichen als Ticks

 

Faber

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2011, 11:03     Titel: Sonderzeichen als Ticks
  Antworten mit Zitat      
Hallo zusammen,

ich erstelle mit Matlab gerade meine ersten einfachen Plots. Unter anderem die Sinusfunktion. Nun möchte ich für die Ticks der x-Achse gerne π, 2π etc. an Stelle ganzer Zahlen verwenden.

Für die Achsenbeschriftung kann ich ja \pi verwenden für die Ticks funktioniert das aber anscheinend nicht. Wenn ich im Fenster Edit Axes Ticks π direkt einfüge wird das Tick im Plot zu einem eth.


Mircode
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 06.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2011, 11:21     Titel:
  Antworten mit Zitat      
Damit habe ich mich auch schon gequält. In der Dokumentation steht explizit drin:

Note that tick labels do not interpret TeX character sequences (however, the Title, XLabel, YLabel, and ZLabel properties do).

Ein figure-Fenster mit Sonderzeichen in den Achsbeschriftungen geht also (wahrscheinlich) nicht.

Wenn du die fertige Grafik allerdings in einem LaTeX-Dokument verwenden möchtest, kannst du zb LaPrint benutzen. Wenn du jetzt $\pi$ als TickLabel angibst, steht im fertigen Dokument auch ein pi.

edit:
Hier http://www.mathworks.com/matlabcent.....view_thread/163920#416254 hat doch jemand getrickst und die Labels durch Textobjekte ersetzt. Dann gehts natürlich doch.
Private Nachricht senden Benutzer-Profile anzeigen
 
Faber

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2011, 16:40     Titel:
  Antworten mit Zitat      
Hab mich nach langer Pause wieder drangemacht. Mit der von dir verlinkten Funktion funktioniert das ganze wunderbar. Nun möchte ich für die Ticks Brüche von pi verwenden. Wie stelle ich es an, dass die Brüche vertikal mit Bruchstrich dargestellt werden?

Code:
xtl = {'0' '\pi/2' '\pi' '3\pi/2' '2\pi'};
>> h = my_xticklabels(gca,[-pi -pi/2 0 pi/2 pi],xtl);
 
Faber

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2011, 11:19     Titel:
  Antworten mit Zitat      
Für die Achsenbeschriftung habe ich folgendes gefunden:

Code:
xlabel('$\displaystyle\frac{\alpha}{\pi}X$','interpreter','latex')
 


Kann ich dass jetzt irgendwie in obigen Code integrieren damit es auch mit den Ticks geht?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.02.2011, 11:57     Titel:
  Antworten mit Zitat      
Hallo,

ohne jetzt zu wissen, wie das mit den LaTeX-Labels geht, würde ich mit logischem Denken auf folgendes kommen:
Code:
xtl = {'0' '\frac{\pi}{2}' '\pi' '\frac{3\pi}{/2}' '2\pi'};
>> h = my_xticklabels(gca,[-pi -pi/2 0 pi/2 pi],xtl);


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Faber

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2011, 12:04     Titel:
  Antworten mit Zitat      
Habe ich auch schon probiert, geht leider nicht:

Zitat:
Warning: Unable to interpret TeX string "\frac{\pi}{2}"
> In my_xticklabels at 61
Warning: Unable to interpret TeX string "\frac{3\pi}{/2}"
> In my_xticklabels at 61
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.02.2011, 12:29     Titel:
  Antworten mit Zitat      
Hallo,

das konnte ich ja nicht wissen, was du schon ausprobiert hast.
Und genausowenig weiß ich leider, was Zeile 61 deines Programms ist.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Faber

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2011, 12:45     Titel:
  Antworten mit Zitat      
Hallo,

habe die Funktion aus dem Link im 2. Posting übernommen.

Code:
function ht = my_xticklabels(varargin)

% ht = my_xticklabels(Ha, xtickpos, xtickstring)
% or
% ht = my_xticklabels(xtickpos, xtickstring)

% Pekka Kumpulainen 12.2.2008

textopts = {};
if length(varargin{1})==1 && ...
        ishandle(varargin{1}) && ...
        strcmpi(get(varargin{1},'Type'),'axes');
    Ha = varargin{1};
    xtickpos = varargin{2};
    xtickstring = varargin{3};
    if nargin > 3
        textopts = varargin(4:end);
    end
else
    Ha = gca;
    Hfig = get(Ha,'Parent');
    xtickpos = varargin{1};
    xtickstring = varargin{2};
    if nargin > 2
        textopts = varargin(3:end);
    end
end

set(Ha,'XTick',xtickpos, 'XTickLabel','')
h_olds = findobj(Ha, 'Tag', 'MUXTL');
if ~isempty(h_olds)
    delete(h_olds)
end

%% Make XTickLabels
NTick = length(xtickpos);
Ybot = min(get(gca,'YLim'));
ht = zeros(NTick,1);
for ii = 1:NTick
    ht(ii) = text('String',xtickstring{ii}, ...
        'Units','data', ...
        'VerticalAlignment', 'top', ...
        'HorizontalAlignment', 'center ', ...
        'Position',[xtickpos(ii) Ybot], ...
        'Tag','MUXTL');
end
if ~isempty(textopts)
    set(ht,textopts{:})
end

%% squeeze axis if needed

set(Ha,'Units','pixels')
Axpos = get(Ha,'Position');
% set(Hfig,'Units','pixels')
% Figpos = get(Hfig,'Position');

set(ht,'Units','pixels')
TickExt = zeros(NTick,4);
for ii = 1:NTick
    TickExt(ii,:) = get(ht(ii),'Extent');
end

needmove = -(Axpos(2) + min(TickExt(:,2)));

if needmove>0;
    Axpos(2) = Axpos(2)+needmove+2;
    Axpos(4) = Axpos(4)-needmove+2;
    set(Ha,'Position',Axpos);
end

set(Ha,'Units','normalized')
set(ht,'Units','normalized')



Die besagte 61. Zeile ist folgende:
Code:
   TickExt(ii,:) = get(ht(ii),'Extent');
 


Gruss Faber
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.