3.1.4. Farben#

Für die meisten Bildelemente kann eine Farbe angegeben werden. Damit lassen sich verschiedene Datensätze voneinander unterscheiden.

import matplotlib.pyplot as plt

Farbnamen#

Soll explizit eine bestimmte Farbe verwendet werden, so ist es am einfachsten die vordefinierten Farbnamen, siehe Beispiel, zu verwenden. In der plt.plot-Methode geschieht dies über das color-Argument.

x = []
y0 = []
y1 = []
y2 = []
y3 = []
for i in range(20):
    cx = -5 + i*0.5
    x.append( cx )
    y0.append( -2 )
    y1.append( cx )
    y2.append( 8 - cx**2 )
    y3.append( 0.2*cx**3 - 2*cx )
plt.plot(x, y0, color='orange')
plt.plot(x, y1, color='steelblue')
plt.plot(x, y2, color='khaki')
plt.plot(x, y3, color='forestgreen');
../../../_images/e4cd0969a4bf2d0145c06ab5dd2bdbac0ad154ac92e82fe0bccb7dc8011b2ab0.png

Werden nicht explizit Farben vorgegeben, wird ein vordefiniertes Farbtableau verwendet.

plt.plot(x, y0, label='C0')
plt.plot(x, y1, label='C1')
plt.plot(x, y2, label='C2')
plt.plot(x, y3, label='C3')
plt.legend();
../../../_images/dfb21b7e5910bb9dc6fbb8622acca0fa4fb85916b01fd6d7aecf39b4a1b38a52.png

Auf diese Farbsequenz kann über die Zeichenkette CN zugegriffen werden, wobei das N den Index angibt. So ist beispielsweise C2 die dritte Farbe in dieser Sequenz.

plt.plot(x, y0, color='C0', label='C0')
plt.plot(x, y2, color='C2', label='C2')
plt.legend();
../../../_images/179c67ad4c8030bb7cde86682f596cc73b56b691cba6c36d70df863e914874b7.png

Farbpaletten#

Für kontinuierliche Farbverläufe werden Farbpaletten verwendet. Wie in diesem Beispiel gezeigt, stehen viele Paletten zur auswahl.

Bei Punktwolken kann die Farbe jedes Punktes definiert werden. Dies kann über einen Wert erfolgen, welcher mit einer Farbpalette in eine Farbe übersetzt wird. Zum Ablesen des zugehörigen Werts, kann eine Farbskala mit der plt.colorbar-Methode eingeblendet werden.

import math as m
import random
n = 1000
px = []
py = []
pr = []
for i in range(n):
    cx = m.sin(i)
    cy = m.cos(i)
    cr = random.random() # m.exp(-i*i/10000)
    px.append(cr * cx)
    py.append(cr * cy)
    pr.append(cr*20)
plt.figure(figsize=(5,4), dpi=100)
plt.scatter(px, py, c=pr)
plt.colorbar(label='Farbwert');
../../../_images/c752649d1355e70edb3a9b2da62976f92544da7b519310ffe78b1ea5a4544a84.png

Die verwendete Farbpalette kann mit dem cmap-Argument definiert werden.

plt.figure(figsize=(5,4), dpi=100)
plt.scatter(px, py, c=px, cmap='seismic')
plt.colorbar(label='x-Wert');
../../../_images/fc4e6f55a67c1712725bd9d77996453dac6a88ac4942c7aa77bdf27b4c82d988.png

Transparenz#

Neben dem Farbwert kann in vielen Fällen auch die Transparenz angegeben werden. Sie nimmt dabei Werte zwischen 0 und 1 an, wobei 0 (0%) einer komplett durchsichtigen Darstellung und 1 (100%) einer undurchsichtigen entspricht. Die Transparenz wird über das alpha-Argument übergeben.

plt.plot(x, y2, color='C0')
plt.plot(x, y2, color='C0', ls='', marker='o', alpha=0.3)

plt.plot(x, y3, color='C1')
plt.plot(x, y3, color='C1', ls='', marker='o', alpha=0.3);
../../../_images/f6327bf96e3beb62afa5f1a6497d6b1f0ec8aea23e2de4506f3fed5a49b1897d.png
plt.figure(figsize=(4,4), dpi=100)
plt.scatter(px, py, s=100, alpha=0.1, edgecolor='None');
../../../_images/38f4b01201ac7cde688897e6d0aa7846d37f2cba6fe3fe8941ccfac3c576a236.png