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

Farbcodierung im 3D-plot

 

maxtob
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2009, 11:13     Titel: Farbcodierung im 3D-plot
  Antworten mit Zitat      
Hallo,

ich habe ein Problem mit der Farbdarstellung im bar3-plot. Geplottet wird die Matrix "diffmat". Die Werte in der Matrix werden verschiedenen Größenintervallen zugeordnet und jedes Intervall bekommt eine Farbe zugeordnet. Das Problem:
Wenn die Werte in der Matrix nicht alle Intervalle abdecken, ändern sich die Farben der Intervalle im Plot. Ich hätte gerne eine feste Farbzuweisung unabhängig ob die Werte der Matrix alle Intervalle abdecken. Meine Idee wäre die in der Plotfunktion zugewiesenen Farbwerte (20, ...,5) durch RGB-Werte zu ersetzen. Allerdings weiß ich nicht wie ich das genau anstellen soll, da der bisherige Code auch nicht von mir selbst geschrieben wurde. Hat jemand einen Vorschlag?
Code:
  function plotfuntion (diffmat, colnames, valnames)
        % PLOT3D    draws a 3-D plot of patient data.
        %  
        %   The bars different values and the height of the bar is the
        %   difference to the reference group in standard deviations.

        h3Dplot = figure('Name','3D plot');
        % 3D plot.
        hPlot3 = subplot(1,1,1);%subplot(1,2,1);
        hCols = bar3(diffmat);
        nTrials = size(diffmat,1);

        % Colors.
        for i = 1:length(hCols)  
            c = get(hCols(i),'CData');
            z = get(hCols(i),'ZData');  
            for j = 1:nTrials    
                if z((j-1)*6+2,2) > 6 || z((j-1)*6+2,2) < -6
                    c(end*(j-1)/nTrials+1:end*j/nTrials,:) = 20;
                elseif z((j-1)*6+2,2) > 4 || z((j-1)*6+2,2) < -4
                    c(end*(j-1)/nTrials+1:end*j/nTrials,:) = 15;  
                elseif z((j-1)*6+2,2) > 2 || z((j-1)*6+2,2) < -2
                    c(end*(j-1)/nTrials+1:end*j/nTrials,:) = 10;    
                else
                    c(end*(j-1)/nTrials+1:end*j/nTrials,:) = 5;    
                end          
            end    
            set(hCols(i),'CData',c);
        end

        title('3D');
        set(hPlot3, 'xtick', 1:length(hCols),'xticklabel', colnames);
        set(hPlot3, 'ytick', 1:nTrials, 'yticklabel', valnames);
end

Vielen Dank im Voraus
Max
Private Nachricht senden Benutzer-Profile anzeigen


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.