colormap('lines') liefert unterschiedliche Farbpalette
DSP
Forum-Meister
Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
Verfasst am : 20.11.2014, 21:44
Titel : colormap('lines') liefert unterschiedliche Farbpalette
Hallo goMatlab Forum,
ich habe ein Problem mit der Verwendung von
Die Farbcodes in cmap entsprechen nicht der Doku vom Typ lines, so fern ich den Code in Funktion 1 zuerst ausführe. Dann ergeben sich folgende Farbcodes...
Plot in Funktion 1:
Code:
H = figure ( 'Visible ','off ') ;
Haxis = axis ;
set ( Haxis, 'DefaultAxesColorOrder ', cmapLaptimes) ;
plot ( Laptimes,'* ') ;
% set xTick per Runden der Fahrerwechsel
if Team.num_swaps > 0
set ( gca ,'XTick ',[ 1 ; unique ( Team.laps_swap ( :,2 ) ) ] ) ;
end
xlabel ( langPack.lap ,'FontSize ',14 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
ylabel ( langPack.lapTime ,'FontSize ',14 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
LegendNames = { key.colCodesLight ,key.colCodesGreen ,key.colCodesOrange ,key.colCodesRed ,key.colCodesDark } ;
L = legend ( LegendNames,'Location ','NorthOutside ','TextColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( L,'Color ',[ 110 /255 110 /255 110 /255 ] ) ;
set ( H,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( gca ,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( gca ,'XColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( gca ,'YColor ',[ 227 /255 227 /255 227 /255 ] ) ;
grid on;
y_ticks_sec = linspace ( Team.fastest_lap - 1 , max ( Team.laptimes_sek ) + 1 ,6 ) ;
Ylabels = cell ( length ( y_ticks_sec) ,1 ) ;
% Umrechnung von sec in MM:SS und wandeln in string
for i=1 :length ( y_ticks_sec)
Ylabels{ i,1 } = [ num2str ( fix ( [ y_ticks_sec( i) / 60 ] ) ,'%d ') ,': ',num2str ( [ mod ( round ( y_ticks_sec( i) ) ,60 ) ] ,'%.2d ') ] ;
end
set ( gca ,'YTickLabel ',Ylabels) ;
xlim ( [ 1 Team.num_laps ] ) ;
ylim ( [ Team.fastest_lap - 1 , max ( Team.laptimes_sek ) + 1 ] ) ;
% save chart as
set ( gcf , 'InvertHardCopy ', 'off ') ;
print ( H,'-dpng ','-r100 ',fullfile ( filepath,[ 'Team ' num2str ( Team.finished_pos ,'%.2d ') '.png '] ) ) ;
Plot in Funktion 2:
Code:
H = figure ( 'Visible ','off ') ;
cmap = colormap ( 'lines ') ;
TeamNames = cell ( size ( leaders_sort,1 ) ,1 ) ;
max_pos = 1 ;
for i=1 :size ( leaders_sort,1 )
x_val = 0 :1 :Teams_gesamt( team_indx( i) ) .num_laps ;
y_val = cell2mat ( Teams_gesamt( team_indx( i) ) .pos_lap ( 1 :size ( x_val,2 ) ) ) ;
max_pos = max ( [ max_pos;y_val] ) ;
TeamNames{ i,1 } = Teams_gesamt( team_indx( i) ) .name ;
plot ( x_val,y_val,'Color ',cmap( i,:) ,'LineWidth ',2 ) ;
grid on;
hold on;
end
hold off % reset hold state
L = legend ( TeamNames,'Location ','SouthEast ','TextColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( L,'Color ',[ 110 /255 110 /255 110 /255 ] ) ;
xlabel ( langPack.lap ,'FontSize ',12 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
ylabel ( langPack.pos ,'FontSize ',12 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
xlim ( [ 1 Teams_gesamt( 1 ) .num_laps ] ) ;
ylim ( [ 0 max_pos + 1 ] ) ;
set ( gca ,'YDir ','reverse ') ;
set ( H,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( gca ,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( gca ,'XColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( gca ,'YColor ',[ 227 /255 227 /255 227 /255 ] ) ;
yticks = linspace ( 1 ,max_pos + 10 - mod ( max_pos,10 ) ,10 ) ;
set ( gca ,'YTick ',round ( yticks) ) ;
xticks = linspace ( 1 ,Teams_gesamt( 1 ) .num_laps + 10 - mod ( Teams_gesamt( 1 ) .num_laps ,10 ) ,10 ) ;
set ( gca ,'XTick ',round ( xticks) ) ;
set ( gcf , 'InvertHardCopy ', 'off ') ;
print ( H,'-dpng ','-r100 ',fullfile ( filepath,'leadersGraph ') ) ;
Es muss hier also irgendeine Beziehung zu den beiden Plots geben (über axis oder figure ???). Habe ich einmal den Code in Funktion 1 ausgeführt, erhalte ich bei erneutem Aufruf von cmap = colormap('lines') immer die gleichen falschen Farbcodes. Starte ich Matlab neu, kommentiere den Code in Funktion 1 aus, sind die Farbcodes in Funktion 2 richtig.
Vielen Dank für eure Hilfe!
Gruß DSP
Harald
Forum-Meister
Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 20.11.2014, 21:59
Titel :
Hallo,
dokumentiert ist
und
aber nicht deine Syntax. Das würde ich also vermeiden.
Grüße,
Harald
DSP
Themenstarter
Forum-Meister
Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
Verfasst am : 20.11.2014, 23:00
Titel :
Hallo Harald,
vielen Dank für den Hinweis. Ich habe die Doku zu dem Befehl schon x-mal durchgelesen, aber das ist mir nie aufgefallen
Wer lesen kann ist klar im Vorteil
Ich habe meine Funktion 2 nun umgeschrieben, so dass die Plot-Vektoren in zwei Matrizen geschrieben werden und somit das hold on überflüssig ist. Dann kann ich die Funktion
auch richtig verwenden.
Code:
H = figure ( 'Visible ','off ') ;
TeamNames = cell ( size ( leaders_sort,1 ) ,1 ) ;
max_pos = 1 ;
% preallocate
x_val = NaN ( Teams_gesamt( 1 ) .num_laps ,size ( leaders_sort,1 ) ) ;
y_val = x_val;
for i=1 :size ( leaders_sort,1 )
x_val( 1 :Teams_gesamt( team_indx( i) ) .num_laps +1 ,i) = 0 :1 :Teams_gesamt( team_indx( i) ) .num_laps ;
y_val( 1 :Teams_gesamt( team_indx( i) ) .num_laps +1 ,i) = cell2mat ( Teams_gesamt( team_indx( i) ) .pos_lap ( 1 :Teams_gesamt( team_indx( i) ) .num_laps +1 ) ) ;
max_pos = max ( [ max_pos;y_val( :,i) ] ) ;
TeamNames{ i,1 } = Teams_gesamt( team_indx( i) ) .name ;
end
plot ( x_val,y_val,'LineWidth ',2 ) ;
grid on;
colormap ( 'lines ') ;
L = legend ( TeamNames,'Location ','SouthEast ','TextColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( L,'Color ',[ 110 /255 110 /255 110 /255 ] ) ;
xlabel ( langPack.lap ,'FontSize ',12 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
ylabel ( langPack.pos ,'FontSize ',12 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
xlim ( [ 1 Teams_gesamt( 1 ) .num_laps ] ) ;
ylim ( [ 0 max_pos + 1 ] ) ;
set ( gca ,'YDir ','reverse ') ;
set ( H,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( gca ,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( gca ,'XColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( gca ,'YColor ',[ 227 /255 227 /255 227 /255 ] ) ;
yticks = linspace ( 1 ,max_pos + 10 - mod ( max_pos,10 ) ,10 ) ;
set ( gca ,'YTick ',round ( yticks) ) ;
xticks = linspace ( 1 ,Teams_gesamt( 1 ) .num_laps + 10 - mod ( Teams_gesamt( 1 ) .num_laps ,10 ) ,10 ) ;
set ( gca ,'XTick ',round ( xticks) ) ;
set ( gcf , 'InvertHardCopy ', 'off ') ;
print ( H,'-dpng ','-r100 ',fullfile ( filepath,'leadersGraph ') ) ;
Allerdings löst das immer noch nicht mein Problem. Die Farben sind in diesem Plot nach wie vor falsch, so fern Funktion 1 vorher aufgerufen wird. Es muss ja irgendeinen Grund haben, warum selbst mein zweckentfremdender Aufruf schon unterschiedliche Farbcodes geliefert hat.
Harald
Forum-Meister
Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 20.11.2014, 23:04
Titel :
Hallo,
meine Vermutung: es bezieht sich auf
Damit veränderst du ja eine Default -Einstellung.
Ansonsten Vorschlag: den Code mal schrittweise entschlacken und schauen, woran es genau liegt.
Grüße,
Harald
DSP
Themenstarter
Forum-Meister
Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
Verfasst am : 20.11.2014, 23:19
Titel :
Genau das ist das Problem. Und wie kann ich dann meine selbst definierten Farben in Funktion 1 der figure übergeben?
Code:
% RGB colorcodes Laptimes
cmapLaptimes = [ 33 /255 ,1 ,3 /255 ; 19 /255 ,120 /255 ,6 /255 ; 1 ,102 /255 ,0 ; 1 ,0 ,0 ; 143 /255 ,4 /255 ,4 /255 ] ;
% funktioniert nicht
H = figure ( 'Visible ','off ') ;
plot ( Laptimes,'* ') ;
colormap ( cmapLaptimes) ;
% geht auch nicht
H = figure ( 'Visible ','off ') ;
plot ( Laptimes,'* ') ;
colormap ( H,cmapLaptimes) ;
Harald
Forum-Meister
Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 21.11.2014, 08:34
Titel :
Hallo,
versuch bitte mal
Grüße,
Harald
DSP
Themenstarter
Forum-Meister
Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
Verfasst am : 21.11.2014, 12:08
Titel :
Hallo Harald,
dann gibt es folgende Fehlermeldung:
Zitat:
Error creating file: Team01.html. Error using hg.GObject/set
The name 'ColorOrder' is not an accessible property for an instance of class 'root'.
Error in writing_Team_laps (line 164)
set(Haxis, 'ColorOrder', cmapLaptimes);
Folgende Befehle gehen auch nicht
Auch die Default Einstellungen nach dem Speichern der figure in Funktion 1 zu laden, behebt den Fehler der colormap in Fkt 2 nicht.
Code:
H = figure ( 'Visible ','off ') ;
Haxis = axis ;
set ( Haxis, 'DefaultAxesColorOrder ', cmapLaptimes) ;
plot ( Laptimes,'* ') ;
...
% save chart as
set ( gcf , 'InvertHardCopy ', 'off ') ;
print ( H,'-dpng ','-r100 ',fullfile ( filepath,[ 'Team ' num2str ( Team.finished_pos ,'%.2d ') '.png '] ) ) ;
colormap ( 'default ') ; % back to Default setting
% oder
colormap ( H,'default ') ; % back to Default setting
% oder
colormap ( gca ,'default ') ; % back to Default setting
Harald
Forum-Meister
Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 21.11.2014, 13:13
Titel :
Hallo,
nächster Versuch:
Sorry, wenn ich mit Schnellschüssen nerve ;) Wenn's das auch noch nicht tut, bitte ein komplett reproduzierbares Beispiel zur Verfügung stellen. Und dann komme ich wirklich erst mit einem Vorschlag, der auch funktioniert - versprochen! :)
Grüße,
Harald
DSP
Themenstarter
Forum-Meister
Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
Verfasst am : 21.11.2014, 13:44
Titel :
Der Fehler mit colormap('lines') ist damit beseitigt. Allerdings gibt es nun einen neuen Fehler. Die durchgezogene Linie top und right sind mit meinem Code nicht mehr zu sehen (Siehe Bild). Evtl. wegen meiner Einteilung von X und Y Achse? Oder in diesem Bsp. nur gestrichelt.
Code:
% RGB colorcodes Laptimes
cmapLaptimes = [ 33 /255 ,1 ,3 /255 ; 19 /255 ,120 /255 ,6 /255 ; 1 ,102 /255 ,0 ; 1 ,0 ,0 ; 143 /255 ,4 /255 ,4 /255 ] ;
h = figure ;
hAx = axes ( 'nextplot ', 'add ') ;
set ( hAx, 'ColorOrder ', cmapLaptimes)
plot ( hAx, rand ( 20 ,5 ) )
xlabel ( 'Lap ','FontSize ',14 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
ylabel ( 'Lap Time ','FontSize ',14 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
LegendNames = { 'Daten1 ','Daten2 ','Daten3 ','Daten4 ','Daten5 '} ;
L = legend ( LegendNames,'Location ','NorthOutside ','TextColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( L,'Color ',[ 110 /255 110 /255 110 /255 ] ) ;
set ( h,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( hAx,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( hAx,'XColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( hAx,'YColor ',[ 227 /255 227 /255 227 /255 ] ) ;
grid on;
Hier ist der Rand ok, aber eben ohne eigene colormap:
Code:
h = figure ;
plot ( rand ( 20 ,5 ) )
xlabel ( 'Lap ','FontSize ',14 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
ylabel ( 'Lap Time ','FontSize ',14 ,'FontWeight ','bold ','Color ',[ 227 /255 227 /255 227 /255 ] ) ;
LegendNames = { 'Daten1 ','Daten2 ','Daten3 ','Daten4 ','Daten5 '} ;
L = legend ( LegendNames,'Location ','NorthOutside ','TextColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( L,'Color ',[ 110 /255 110 /255 110 /255 ] ) ;
set ( h,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( gca ,'Color ',[ 51 /255 51 /255 51 /255 ] ) ;
set ( gca ,'XColor ',[ 227 /255 227 /255 227 /255 ] ) ;
set ( gca ,'YColor ',[ 227 /255 227 /255 227 /255 ] ) ;
grid on;
Beschreibung:
Download
Dateiname:
Team01.png
Dateigröße:
22.27 KB
Heruntergeladen:
420 mal
Harald
Forum-Meister
Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 21.11.2014, 14:25
Titel :
Hallo,
interessant. Ein
am Ende hilft bei mir.
Hab's auch in R2014b getestet, da tritt das Problem gar nicht erst auf.
Grüße,
Harald
DSP
Themenstarter
Forum-Meister
Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
Verfasst am : 21.11.2014, 17:08
Titel :
Super, vielen Dank Harald!
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
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.