HOWTO · MATLAB

MATLAB RGB Triplet

Erfahren Sie, wie Sie MATLAB-Diagrammfarben mit RGB-Tripeln für Linien, Streupunkte und einzelne Balken festlegen.

Auf dieser Seite

Um eine benutzerdefinierte Diagrammfarbe in MATLAB festzulegen, verwenden Sie ein RGB-Tripel: einen Vektor mit drei Elementen in der Reihenfolge Rot, Grün, Blau, wobei jeder Wert zwischen 0 und 1 liegt. Setzen Sie die Eigenschaft Color einer Linie auf ein Tripel oder übergeben Sie eine N×3-Matrix, um N Streupunkte oder Balken einzeln einzufärben.

RGB-Tripel in MATLAB verstehen

Ein RGB-Tripel enthält die Intensitäten von Rot, Grün und Blau in dieser Reihenfolge. Beispielsweise steht [1 0 0] für Rot, [0 1 0] für Grün und [0 0 1] für Blau. Durch das Mischen der Komponenten entstehen weitere Farben: [0.5 0.5 0] kombiniert Rot und Grün zu einem gedämpften Gelb. Bei einem Wert von 0 wird die entsprechende Farbe nicht beigemischt; bei 1 wird sie mit voller Intensität beigemischt.

Verwenden Sie ein einzelnes Tripel, wenn ein ganzes Grafikobjekt dieselbe Farbe haben soll. Für individuelle Farben von Punkten oder Balken ordnen Sie in einer N×3-Matrix jedem Element eine Zeile mit einem Tripel zu. N entspricht dabei der Anzahl der dargestellten Elemente.

Linienfarbe mit einem RGB-Tripel festlegen

Die Eigenschaft Color eines Linienobjekts nimmt ein RGB-Tripel entgegen. Das folgende vollständige Beispiel zeichnet eine Sinuskurve und färbt die Linie in einem benutzerdefinierten Rotton.

warning('off', 'Octave:gnuplot-graphics');
set(0, 'defaultfigurevisible', 'off');
x = 0:0.1:10;
y = sin(x);
plot(x, y, 'Color', [0.8 0.2 0.2], 'LineWidth', 2);
title('Sine Wave with Custom Color');
xlabel('X-axis');
ylabel('Y-axis');
grid on;

Ändern Sie die drei Werte, um die Intensität von Rot, Grün und Blau anzupassen. Jeder Wert muss zwischen 0 und 1 liegen; dasselbe Tripel gilt für die gesamte Linie.

RGB-Farben für Streupunkte zuweisen

Um einzelne Streupunkte unterschiedlich einzufärben, übergeben Sie scatter eine N×3-Farbmatrix. Jede Zeile gehört zu dem Punkt an derselben Position in den Vektoren x und y. Das folgende vollständige Beispiel verwendet vier Punkte und weist jedem eine eigene Farbe zu.

warning('off', 'Octave:gnuplot-graphics');
set(0, 'defaultfigurevisible', 'off');
x = [1 2 3 4];
y = [2 4 3 5];
colors = [1 0 0; 0 1 0; 0 0 1; 0.8 0.4 0];
scatter(x, y, 80, colors, 'filled');
xlabel('X');
ylabel('Y');
title('Scatter Points with RGB Colors');
grid on;

Die Matrix muss für jeden Punkt eine Zeile enthalten; ihre drei Spalten enthalten die Werte für Rot, Grün und Blau. Wenn Sie stattdessen ein einzelnes Tripel übergeben, haben alle Punkte dieselbe Farbe.

Einzelne Balken mit RGB-Tripeln einfärben

Setzen Sie in MATLAB die Eigenschaft FaceColor des Balkenobjekts auf 'flat' und weisen Sie seiner Eigenschaft CData eine N×3-Matrix zu. Jede Zeile legt dann die Farbe eines Balkens fest. Erstellen Sie beispielsweise zunächst bars = bar(values) und verwenden Sie anschließend bars.FaceColor = 'flat'; bars.CData = colors;. Diese Schnittstelle des Bar-Objekts ist spezifisch für MATLAB. Das ausführbare Octave-Beispiel unten zeichnet jeden Balken als Patch, sodass jedem Rechteck das passende RGB-Tripel zugewiesen werden kann.

warning('off', 'Octave:gnuplot-graphics');
set(0, 'defaultfigurevisible', 'off');
values = [3 5 2 8];
colors = [0.2 0.6 0.8; 0.8 0.2 0.2; 0.2 0.8 0.2; 0.5 0.5 0.2];
hold on;
for k = 1:numel(values)
  x = k;
  patch([x-0.4 x+0.4 x+0.4 x-0.4], [0 0 values(k) values(k)], colors(k,:));
end
set(gca, 'XTick', 1:numel(values), 'XTickLabel', {'A', 'B', 'C', 'D'});
xlim([0.5 numel(values)+0.5]);
xlabel('Category');
ylabel('Value');
title('Bars with Individual RGB Colors');
grid on;

Bei einer MATLAB-Balkenreihe werden die Zeilen von CData den Balken der Reihe nach zugeordnet. Sollen alle Balken dieselbe Farbe haben, setzen Sie FaceColor direkt auf ein einzelnes RGB-Tripel, statt die flache Flächenfärbung mit einer Farbmatrix zu verwenden. Der bar-Handle in Octave stellt die MATLAB-Eigenschaft Bar.CData nicht bereit. Verwenden Sie dort daher Patch-Objekte, wenn Sie einzelnen Flächen unterschiedliche Farben zuweisen möchten.