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

Balken beschneiden mir axis

 

Niceday

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 13:59     Titel: Balken beschneiden mir axis
  Antworten mit Zitat      
Hallo Leute,

ich versuche verweifelt mein Bar-Diagramm zu formatieren..

möchte dabei mit dem Befehl Axis ein YMin und YMax definieren also nur einen bestimmten Abschnitt der Y-Achse anzeigen.. Nun das zwar auch bei der Achse so gemacht, aber die Balken werden nicht eingekürzt.

Soll heißen, wenn ich YMin statt 0 auf 500 setzte, steht der Balken halt unten um 500 über...

Woran kann das liegen?

Beste Grüße!


Coja
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 14:40     Titel:
  Antworten mit Zitat      
Hallo.
Kannst du bitte mal den Code reinstellen? Eigentlich funktioniert der Axis-Befehl auch bei der BAR-Darstellung sehr gut. Oder hast du irgendwelche Abhängigkeiten von Maximal- und Minimalwert der Achse zur relativen/absoluten Häufigkeit der Balken?
Private Nachricht senden Benutzer-Profile anzeigen
 
Niceday

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 14:50     Titel:
  Antworten mit Zitat      
Ich hab ein GUI gebastelt und dabei mit Axes eine Diagrammfläche eingesetzt. In diese lass ich nun mein Bar-Chart schreiben...
Alles funktioniert soweit auch, nur beim Axis befehl also: axis([xmin xmax ymin ymax)] werden zwar die Achsen auf den eingestellten Wert gesetzt, die Balken gehn aber einfach drüber hinweg Confused

Weiß ned ob dir der Code weiterhilft is noch kaum kommentiert und ich mein typisches Programmierchaos:

Code:
function VorschauButton_Callback(hObject, eventdata, handles)
% hObject    handle to VorschauButton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
run Vorschau
XWerte = evalin('base',['XWerte']);
YWerte = evalin('base',['YWerte']);
YWert = evalin('base',['YWert']);
XWert = evalin('base',['XWert']);
Label = evalin('base',['Label']);
XLabel = Label(XWert);
YLabel = Label(YWert);
SaNo = evalin('base',['SaNo']);
WertB = evalin('base',['WertB']);
WertY = evalin('base',['WertY']);
WertY = str2num(WertY);
SaNoY = evalin('base',['SaNoY']);
SaNoY = str2num(SaNoY);
MP = evalin('base',['MP']);
YMin = evalin('base',['YMin']);
YMax = evalin('base',['YMax']);
ProbenAnzahl = evalin('base',['ProbenAnzahl']);

if XWert == 108;
    bar(YWerte, 'FaceColor', [1 0.6 0]);
else
    plot(XWerte, YWerte, '+');
    set(gca, 'XColor','w', 'YColor','w','XGrid','on', 'GridLineStyle', '-')
end

if MP == 1;
   YMin = str2num(YMin);
   YMax = str2num(YMax);
   set(gca,'YLim',[YMin YMax]);
end

T1=char(YLabel);
T2=' - ';
T3=char(XLabel);

title ([T1, T2, T3], 'FontSize', 16, 'FontWeight', 'Bold') %Diagrammtitel festlegen
set(get(gca,'Title'),'Color','w'); %Diagrammtitel-Farbe festlegen (weiß)
set(get(gca,'XLabel'),'Color','w'); %x-Achsen-Beschriftungsfarbe festlegen (weiß)
set(get(gca,'YLabel'),'Color','w'); %y-Achsen-Beschriftungsfarbe festlegen (weiß)
set(gca, 'XColor','w', 'YColor','w','YGrid','on', 'GridLineStyle', '-', 'XTickLabel', (XWerte))
whitebg([0.8667 0.8667 0.8667]); %Diagramm-Hintergrundfarbe festlegen (grau)
ylabel(YLabel, 'FontSize', 14, 'FontWeight', 'Bold') %y-Achse beschriften



if SaNoB == 1
    xlabel([' ' XLabel], 'FontSize', 14, 'FontWeight', 'Bold')
    for n = 1:ProbenAnzahl, snstr=num2str(SaNo(n)); text(n, SaNoY ,snstr,'HorizontalAlignment','center', 'FontSize', 10, 'FontWeight', 'normal','Color','w');
    end
else
    xlabel(XLabel, 'FontSize', 14, 'FontWeight', 'Bold') %y-Achse beschriften
end

if WertB == 1
    for n = 1:ProbenAnzahl, snstr=num2str(YWerte(n)); text(n, WertY ,snstr,'HorizontalAlignment','center', 'FontSize', 12, 'FontWeight', 'Bold');
    end
else
    xlabel(XLabel, 'FontSize', 14, 'FontWeight', 'Bold') %y-Achse beschriften
end
 
 
Niceday

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 14:58     Titel:
  Antworten mit Zitat      
Im obigen Code hab ich statt axis auchmal YLim versucht - gleicher Effekt Crying or Very sad
 
Niceday

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 16:01     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Antwort!

Das funktioniert dann aber nur bei den Maxima, wie sehts damit aus wenn ich eine Minimum-Grenze angeben will.

Bsp:

Meine Werte sind alle knapp größer als 1000 - deshalb interessiert mich alles unter - sagen wir - 950 nicht und soll abgeschnitten werden.

Es sollen also nur die Balken in einem Bereich von 950 bei 1050 angezeigt werden... setz ich nun das untere Limit auf diesen Wert hängen die Balken einfach nach unten drüber.
 
Coja
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 16:01     Titel:
  Antworten mit Zitat      
Ah. Dann liegt es ja nicht am Axis-Befehl, sondern an der Darstellung. Am einfachsten wäre es wenn du den jeweiligen Ordinatenwert auf das Maximum der y-Achse setzt, falls dieser das Limit überscheitet
so in etwa:

Code:
mm=find(y_Werte>ymax);
y_Werte(mm)=ymax(mm);
%und dann der Bar-Befehl,....
Private Nachricht senden Benutzer-Profile anzeigen
 
Coja
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 16:09     Titel:
  Antworten mit Zitat      
Niceday hat Folgendes geschrieben:

Bsp:

Meine Werte sind alle knapp größer als 1000 - deshalb interessiert mich alles unter - sagen wir - 950 nicht und soll abgeschnitten werden.

Es sollen also nur die Balken in einem Bereich von 950 bei 1050 angezeigt werden... setz ich nun das untere Limit auf diesen Wert hängen die Balken einfach nach unten drüber.


Arbeitest du mit absoluten Häufigkeiten oder willst du dir nur Werte anzeigen lassen?
Also du hast dann ein grundsätzliches Problem mit der Darstellung, aber egal: Wenn du nur die Darstellung brauchts, dann zoom dich doch einfach in den richtigen Bereich rein. Vielleicht kannst du das misslungene Bild mal hochladen.

Bei mir klappt das eigentlich mit dem Abschneiden durch Axis(). Der Axis-Befehl sollte erst nach dem erstellen des Figures ausgeführt werden:



Code:

bar([2 33 22])
axis([0 5 5 30])
Private Nachricht senden Benutzer-Profile anzeigen
 
Niceday

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 16:22     Titel:
  Antworten mit Zitat      
Ich will mir nur die Werte ausgeben lassen. Der Axis Befehl bzw. auch YLim kommt erst nachdem die Figure erstellt wurde..

Hatte das ganze auch schonmal einfach in ein Figure "plotten" lassen und dann ging auch... aber jetzt solls in einem GUI gezeichnet werden und da gehts nun nicht...

Ich versuch mal ein Bild hochzuladen...
 
Niceday

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 16:46     Titel:
  Antworten mit Zitat      
..so habs nun endlich geschafft - musste ein paar Dinge verwischen:

http://www.pictureupload.de/originals/pictures/220609164304_1.jpg
http://www.pictureupload.de/originals/pictures/220609164347_2.jpg

Auf dem ersten Screenshot hab ich die Y-Achse bei 0 beginnen lassen, bei Bild 2 hab ich sie auf 700 hochgesetzt...
 
Coja
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 16:54     Titel:
  Antworten mit Zitat      
Da sieht wirklich nicht schön aus. Muss es denn unbedengt der BAR-Befehl sein? Vielleicht kannst du ja auch über den Plot Befehl die einzelnen Ecken des jeweiligen Rechteckes setzen (Maximalwerte, Breite des Balkens und Minimalwerte) und dann die Fläche farbig machen. Das wäre natürlich sehr umständlich...
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 22.06.2009, 17:04     Titel:
  Antworten mit Zitat      
Moinm

ich bin mir nicht sicher ob das einen Einfluss haben könnte, aber ich schreibe grundsätzlich den handle zu der jeweiligen axes (auch wenn es nur eine ist) sowohl in die plot (oder auch bar)-Aufrufe als auch in die Anpassungen (xLim, yLim, xlabel etc) und gerade bei GUIs vermeide ich die Verwendung von "gca", denn (du hast es wahrscheinlich mit GUIDE erstellt) die axes hat ja schon einen eindeutigen handle.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Niceday

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2009, 17:10     Titel:
  Antworten mit Zitat      
hmm.. besser wärs schon Laughing aber eigentlich is in meinem Kopf nur ein riesen Question wieso überhaupt das ganze ned funktioniert.. sonsts hats bisher immer wunderbar funktioniert Crying or Very sad
 
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 - 2024 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.