Matplotlib 简明教程

Matplotlib - Colors

Matplotlib 为管理绘图中的颜色提供了多种选项,允许用户增强视觉吸引力并有效地传达信息。

可以为绘图中的不同元素设置颜色,例如线、标记和填充区域。例如,在绘图数据时,可使用颜色参数指定线条颜色。同样,散点图允许为各个点设置颜色。下图说明了绘图中不同元素的颜色 −

colors input

Color Representation Formats in Matplotlib

Matplotlib 支持各种表示颜色的格式,包括 −

  1. RGB or RGBA Tuple

  2. Hex RGB 或 RGBA 字符串

  3. Gray Level String

  4. "Cn" Color Spec

  5. Named colors

下面对每种格式进行了简要讨论,并提供了相应的示例。

The RGB or RGBA Tuple format

您可以使用范围在 [0, 1] 之内的浮点值元组来表示红色、绿色、蓝色和 Alpha(透明度)值。例如: (0.1, 0.2, 0.5) 或 (0.1, 0.2, 0.5, 0.3)。

Example

以下示例演示如何使用 RGB 或 RGBA 元组指定绘图的 face color

import matplotlib.pyplot as plt
import numpy as np

# sample data
t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)

# RGB tuple for specifying facecolor
fig, ax = plt.subplots(figsize=(7,4), facecolor=(.18, .31, .31))

# Plotting the data
plt.plot(t, s)

# Show the plot
plt.show()
print('successfully used the RGB tuple for specifying colors..')

执行上述代码,我们将得到以下输出 −

colors ex1
successfully used the RGB tuple for specifying colors..

The Hex RGB or RGBA String format

一个表示不区分大小写的 hex RGB 或 RGBA 的字符串,例如:'#0F0F0F' 或 '#0F0F0F0F' 可用于指定 matplotlib 中的颜色。

Example

此示例使用 hex 字符串指定 axis face color

import matplotlib.pyplot as plt
import numpy as np

# Example data
t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)

# Hex string for specifying axis facecolor
fig, ax = plt.subplots(figsize=(7,4))
ax.set_facecolor('#eafff5')

# Plotting the data
plt.plot(t, s)

# Show the plot
plt.show()
print('successfully used the Hex string for specifying colors..')

执行上述代码,我们将得到以下输出 −

colors ex2
successfully used the Hex string for specifying colors..

此外,一个 shorthand hex RGB or RGBA string (不区分大小写)可用于指定 matplotlib 中的颜色。这等效于重复字符的 hex 简写。例如:'#abc'(等效于 '#aabbcc')或 '#abcd'(等效于 '#aabbccdd')。

The Gray Level String format

我们可以使用 [0, 1] 范围内的浮点值字符串表示来表示灰度级。例如,“0”表示黑色,“1”表示白色,“0.8”表示浅灰色。

Example

这是一个使用灰度级字符串指定 title color 的示例。

import matplotlib.pyplot as plt
import numpy as np

# Example data
t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)

# create a plot
fig, ax = plt.subplots(figsize=(7,4))

# Plotting the data
plt.plot(t, s)

# using the Gray level string for specifying title color
ax.set_title('Voltage vs. time chart', color='0.7')

# Show the plot
plt.show()
print('successfully used the Gray level string for specifying colors..')

执行上述代码,我们将得到以下输出 −

colors ex3
successfully used the Gray level string for specifying colors..

The "Cn" Color notation

颜色规范“Cn”,即“C”后跟一个数字,该数字是默认属性循环 (rcParams["axes.prop_cycle"]) 中的索引,可用于指定 matplotlib 中的颜色。

Example

在此示例中,使用 Cn 符号(color='C1')绘制一个绘图,该符号对应于默认属性循环中的第 2 个颜色。

import matplotlib.pyplot as plt
import numpy as np

# Example data
t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)

# create a plot
fig, ax = plt.subplots(figsize=(7,4))

# Cn notation for plot
ax.plot(t, .7*s, color='C1', linestyle='--')

# Show the plot
plt.show()
print('successfully used the Cn notation for specifying colors..')

执行上述代码,我们将得到以下输出 −

colors ex4
successfully used the Cn notation for specifying colors..

The Single Letter String format

在 Matplotlib 中,单字母字符串用作简写符号来表示一组基本颜色。这些简写符号是 base colors 的一部分,作为 matplotlib.colors.BASE_COLORS 容器中的字典提供。每个字母都对应于一种特定的颜色。

单字母速记符号包括:“b”:蓝色,“g”:绿色,“r”:红色,“c”:青色,“m”:品红色,“y”:黄色,“k”:黑色以及“w”:白色。

Example

在此示例中,每个基色被绘制为用其对应的单字母速记符号表示的条。

import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np

# Get the base colors and their names
base_colors = mcolors.BASE_COLORS
color_names = list(base_colors.keys())

# Create a figure and axis
fig, ax = plt.subplots(figsize=(7, 4))

# Plot each color as a bar
for i, color_name in enumerate(color_names):
   ax.bar(i, 1, color=base_colors[color_name], label=color_name)

# Set the x-axis ticks and labels
ax.set_xticks(np.arange(len(color_names)))
ax.set_xticklabels(color_names)

# Set labels and title
ax.set_title('Base Colors')

# Add legend
ax.legend()

# Show the plot
plt.show()
print('Successfully visualized all the available base colors..')

执行上述代码,我们将得到以下输出 −

colors ex5
Successfully visualized all the available base colors..

Other formats

我们还可以使用“xkcd:”前缀、 xkcd color survey 中不区分大小写的颜色名称, X11/CSS4 ("html") 颜色名称和 Tableau Colors

Example

此示例演示了在 Matplotlib 绘图中使用不同颜色格式,包括 X11/CSS4 颜色、xkcd 颜色和 Tableau 颜色。

import matplotlib.pyplot as plt
import numpy as np

# Example data
t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)

# create a plot
fig, ax = plt.subplots(figsize=(7, 4))

# Plotting the data
plt.plot(t, s)

# 5) a named color:
ax.set_ylabel('Specifying color using the X11/CSS4 name', color='peachpuff')

# 6) a named xkcd color:
ax.set_xlabel('Specifying color name from the xkcd color survey', color='xkcd:crimson')

# 8) tab notation:
ax.set_title('Specifying color using the Tableau Colors', color='tab:orange')

plt.show()
print('Successfully used the X11/CSS4, xkcd, and Tableau Colors formats...')

执行上述代码,我们将得到以下输出 −

colors ex6
Successfully used the X11/CSS4, xkcd, and Tableau Colors formats...

Darken or lighten a color

为了加深或减淡任何颜色,可以使用 plot() 方法的 alpha 参数,alpha 值越大,颜色越深,值越小,颜色越浅。

Example

在此示例中,创建了两条具有不同 alpha 值的线,以复制线中更深和更浅的颜色。

import numpy as np
from matplotlib import pyplot as plt

# Sample data
xs = np.linspace(-2, 2, 100)
ys = np.sin(xs)

# Create a figure
fig, ax = plt.subplots(figsize=(7, 4))

# plot two lines with different alpha values
ax.plot(xs, ys, c='red', lw=10, label="Darken")
ax.plot(xs+.75, ys+.75, c='red', lw=10, alpha=0.3, label="Lighten")
ax.legend(loc='upper left')

plt.show()

执行上述代码,我们将得到以下输出 −

colors ex7