Ich habe für eine Klasseneinteilung eine dreidimensionale Darstellung in einem 2D Koordinatensystem selbst programmiert, ein Bild davon ist im Anhang.
Die Klassen sind auf der y-Achse und die bunten Kästchen sind je nach Anzahl der in der Klasse liegenden Werte eingefärbt - das ist der Z-Wert.
Das ganze dann für die verschiedene X-Werte.
Ein Beispiel:
Folgende aus der Luft gegriffene Werte:
X-Wert = 50
Y-Klasse = 10-11
innerhalb der Klasse liegen 150 Werte(10.05, 10.11, 10.25,...) ->
Kästchen bei X = 50 und Y = 10-11 wird meinetwegen gelb eingefärbt.
Dazu wird dann rechts die Farbskala angezeigt, um den Z-Wert(die Farbe des Kästchens) zuordnen zu können.
Nur ist es eben etwas umständlich, das so zuzuordnen.
----
So, nun schwebt mir folgendes vor:
Fahre ich mit der Maus über ein buntes Kästchen, dann soll mir X,Y und Z-Wert dieses Kästchens angezeigt werden.
Nur wie bekommt man das hin?
Für matlabinterne Darstellungen gibt es das ja, aber wie sieht es sonst aus?
---
Eine Idee meinerseits:
Fahre ich mit dem Mauszeiger über ein Kästchen, überprüft eine Funktion im Hintergrund die Position des Mauszeigers im Koordinatensystem.
Beispielsweise X= 49.9, Y = 10.4.
Anhand dieser Position kann die Funktion dann einen Z-Wert zuordnen und dieser wird mir dann angezeigt.
--
Nochmal in kurz:
Die Funktion, die ich suche, soll die Mausposition im Koordinatensystem abprüfen. Daraufhin ordne ich über eine eigene Programmierung anhand des X- und des Y-Werts einige beliebige Werte zu. Diese zugeordneten Werte sollen mir dann im Plot in einem kleinen extra-Kästchen angezeigt werden
Jetzt habe ich verstanden, was Du wolltest. Dafür würde ich eher die WindowsButtonDownFcn verwenden: Üblicherweise erhält man die Informationen beim Klick, nicht bei Loslassen der Maustaste. Aber es stimmt: Das sollte der OP selbst bestimmen können.
Also leider komme ich nicht damit klar.
Ich habe eine GUI erstellt, in der sich ein Koordinatensystem befindet.
Für die Daten und das Koordinatensystem gibt es vier verschiedene Darstellungsarten, eine davon ist im Anhang im ersten Post. In dieser möchte ich das so, wie in dem Vorschlag von Sco. Nur hab ich überhaupt keien Idee, wie ich das bei mir einbaue.
Habe nun den Vierecken direkt eine ButtonDownFcn zugeordnet.
Die Vierecke werden nun so erzeugt:
Code:
for i=1:n_x
for j = 1:anz_klassen
farbe = farbe_ges(farb_index(j,i),:);
rectangle('Position',[handles.x(i)-x_diff/40,h_balken(j),x_diff/20,h_balken(2)],...
'FaceColor',farbe, 'EdgeColor','black','ButtonDownFcn',@recbut) end end
Jetzt habe ich verstanden, was Du wolltest. Dafür würde ich eher die WindowsButtonDownFcn verwenden: Üblicherweise erhält man die Informationen beim Klick, nicht bei Loslassen der Maustaste.
Da hasst du natuerlich recht . War dem kurz angebunden sein geschuldet.
@gasmeister
Zitat:
So nun passiert auch was, wenn ich auf die Vierecke klicke.
Eine Fehlermeldung Smile
Dann gib sie doch bitte auch an! Das vereinfacht die Fehlersuche ungemein. Ausserdem waere es auch praktisch wenn du wenigstens ein wenig deines Codes aus der "function recbut" angeben wuerdes (so kann man sich ein Bild machen was du bereits versucht hasst bzw. vielleicht moechtest).
Zitat:
...denn nun aussehen, das ich da diesem Viereck zugehörige Daten reinbekomme und dann per Klick anzeige?
Am einfachsten wäre die Eigenschaft "Position" darein zu bekommen,
Welche Daten meinst du denn, die Daten aus deinem Graph oder irgendwelche Positionsangaben? Welche "Position" meinst du im 2. Satz, die aus dem Rechteck (welche du ja schon hasst) oder die vom Cursor?
Leider kann ich dir nicht helfen, da ich nicht wirklich verstehe was du wie machen moechtest.
Die Funktion recbut war noch fast leer, deshalb habe ich sie nicht gepostet
Jetzt hab ich es aber selbst hinbekommen nach 4 Stunden Frickelei.
Die Vierecke werden nun so erstellt:
Code:
for i=1:n_x
for j = 1:anz_klassen
farbe = farbe_ges(farb_index(j,i),:);
pos = [handles.x(i)-x_diff/40,h_balken(j),x_diff/20,h_balken(2)];
rectangle('Position',pos,...
'FaceColor',farbe, 'EdgeColor','black','ButtonDownFcn',{@recbut,handles});
end end
Der Knackpunkt war bei "'ButtonDownFcn',{@recbut,handles}); " dieses handles mit hintendran zu hängen, dann ging es recht einfach.
Dieses Zuordnen der Mauszeigerposition im Koordinatensystem konnte ich mir letztendlich sparen, da man die Kästchen auch direkt anklicken kann.
Aber das hätte so ähnlich funktioniert(bei der ButtonDownFcn das handles dranhängen).
mfG
Einstellungen und Berechtigungen
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
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.