Matplotlib Colormap

Matplotlib Colormap

参考:matplot colormap

Matplotlib是Python中最流行的绘图库之一,它提供了丰富的颜色映射(colormap)选项,用于美化图表。本文将详细介绍Matplotlib中的颜色映射功能,包括如何使用预定义的颜色映射、如何创建自定义的颜色映射等。

1. 使用预定义的颜色映射

Matplotlib中有许多预定义的颜色映射,可以通过matplotlib.cm模块来访问。下面是一个简单的示例,使用预定义的颜色映射绘制一个简单的散点图:

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)

plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()

Output:

Matplotlib Colormap

在上面的示例中,我们使用了viridis颜色映射,并通过cmap参数指定给散点图指定了颜色映射。

2. 自定义颜色映射

除了预定义的颜色映射外,我们还可以创建自定义的颜色映射。下面是一个示例代码,创建一个自定义的颜色映射,并将其应用到图表中:

import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1)]
cmap_custom = LinearSegmentedColormap.from_list('custom', colors)

x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.scatter(x, y, c=y, cmap=cmap_custom)
plt.colorbar()
plt.show()

在上面的示例中,我们创建了一个自定义的颜色映射cmap_custom,并将其应用到散点图中。

3. 设置颜色映射范围

有时候我们需要设置颜色映射的范围,可以通过设置vminvmax参数来实现。下面是一个示例代码,将颜色映射范围限定在[0, 1]之间:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.cos(x)

plt.scatter(x, y, c=y, cmap='plasma', vmin=0, vmax=1)
plt.colorbar()
plt.show()

Output:

Matplotlib Colormap

在上面的示例中,我们通过设置vminvmax参数来将颜色映射的范围限定在[0, 1]之间。

4. 使用颜色映射绘制热图

颜色映射在绘制热图(heatmap)时特别有用,下面是一个示例代码,使用颜色映射绘制一个简单的热图:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.rand(5, 5)

plt.imshow(data, cmap='coolwarm', interpolation='nearest')
plt.colorbar()
plt.show()

Output:

Matplotlib Colormap

在上面的示例中,我们使用颜色映射coolwarm绘制了一个简单的热图。

5. 结合颜色映射和3D图形

颜色映射也可以应用在3D图形中,下面是一个示例代码,使用颜色映射绘制一个简单的3D曲面图:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(x, y, z, cmap='plasma')
fig.colorbar(surf)
plt.show()

Output:

Matplotlib Colormap

在上面的示例中,我们使用颜色映射plasma绘制了一个简单的3D曲面图。

6. 透明度设置

除了颜色之外,透明度也可以通过颜色映射来控制。下面是一个示例代码,使用透明度来控制散点的颜色:

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='viridis')
plt.colorbar()
plt.show()

Output:

Matplotlib Colormap

在上面的示例中,我们通过设置alpha参数来控制散点的透明度。

7. 颜色映射的选择

在选择颜色映射时,需要根据数据的特点和图表的要求来选择合适的颜色映射。下面是一个示例代码,演示了不同颜色映射的效果:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

fig, axs = plt.subplots(2, 2)

axs[0, 0].scatter(x, y, c=y, cmap='viridis')
axs[0, 0].set_title('Viridis')

axs[0, 1].scatter(x, y, c=y, cmap='plasma')
axs[0, 1].set_title('Plasma')

axs[1, 0].scatter(x, y, c=y, cmap='cool')
axs[1, 0].set_title('Cool')

axs[1, 1].scatter(x, y, c=y, cmap='cividis')
axs[1, 1].set_title('Cividis')

plt.tight_layout()
plt.show()

Output:

Matplotlib Colormap

在上面的示例中,我们比较了viridisplasmacoolcividis四种颜色映射的效果。

8. 颜色映射亮度调整

有时候我们需要调整颜色映射的亮度,可以通过ListedColormap来实现。下面是一个示例代码,调整颜色映射的亮度:

import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

colors = plt.cm.viridis.colors
brightness = 0.5
new_colors = colors * brightness

cmap_brightness = ListedColormap(new_colors)

x = np.linspace(0, 10, 100)
y = np.cos(x)

plt.scatter(x, y, c=y, cmap=cmap_brightness)
plt.colorbar()
plt.show()

在上面的示例中,我们调整了viridis颜色映射的亮度,并将其应用到散点图中。

9. 使用颜色映射绘制直方图

直方图是用来表示数据分布的常用图表,我们可以通过颜色映射来美化直方图。下面是一个示例代码,使用颜色映射绘制一个简单的直方图:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(1000)

plt.hist(data, bins=30, density=True, alpha=0.6, color='y', cmap='coolwarm')
plt.colorbar()
plt.show()

在上面的示例中,我们使用颜色映射coolwarm将直方图中的每个条形柱子着色。

10. 高级颜色映射设置

除了上面介绍的基本功能外,Matplotlib还提供了一些高级的颜色映射设置选项,如设置颜色映射的亮度、对比度、饱和度等。下面是一个示例代码,演示了如何设置颜色映射的不同参数:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 10, 100)
y = np.tan(x)

norm = plt.Normalize()
sm = plt.cm.ScalarMappable(cmap='viridis', norm=norm)
sm.set_array([])

fig, ax = plt.subplots()
sc = ax.scatter(x, y, c=y, cmap='viridis', norm=norm)
fig.colorbar(sm)
plt.show()

在上面的示例中,我们通过ScalarMappable类设置了颜色映射的不同参数,包括亮度、对比度、饱和度等。

总结:

本文详细介绍了Matplotlib中的颜色映射功能,包括使用预定义的颜色映射、创建自定义的颜色映射、设置颜色映射范围、结合颜色映射绘制热图、使用颜色映射绘制3D图形等。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程