matplotlib colormaps

matplotlib colormaps

参考:Matplotlib Colormaps

在数据可视化中,我们经常需要将数值映射到颜色上,以便更直观地理解数据的分布和趋势。而matplotlib提供了丰富的colormaps,可以帮助我们实现这一目的。Colormap是一种颜色映射机制,它可以将数据值映射到不同的颜色上。

常用colormaps

1. Viridis

Viridis是一种从深蓝色到亮黄色的颜色映射,适合于显示温度、海拔等连续型数据。下面是一个使用Viridis colormap的示例代码:

import matplotlib.pyplot as plt
import numpy as np

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

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

Output:

matplotlib colormaps

2. Jet

Jet是一种从蓝色到红色的颜色映射,常用于表达高低值数据。下面是一个使用Jet colormap的示例代码:

import matplotlib.pyplot as plt
import numpy as np

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

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

Output:

matplotlib colormaps

3. RdBu

RdBu是一种从红色到蓝色的颜色映射,用于表示正负值数据。下面是一个使用RdBu colormap的示例代码:

import matplotlib.pyplot as plt
import numpy as np

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

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

Output:

matplotlib colormaps

自定义colormaps

除了使用内置的colormaps外,我们还可以自定义自己的colormaps。下面是一个示例代码,演示了如何创建一个从蓝色到橙色的colormap:

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

colors = ['blue', 'orange']
cmap = mcolors.LinearSegmentedColormap.from_list('my_colormap', colors)

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

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

Output:

matplotlib colormaps

使用colormaps

在实际应用中,我们可以使用colormap来为不同的图表和数据展示添加颜色信息。下面是一些具体的示例代码:

4. 折线图使用colormap

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, color='blue', label='sin', alpha=0.5)
plt.plot(x, y2, color='orange', label='cos', alpha=0.5)
plt.legend()
plt.show()

Output:

matplotlib colormaps

5. 散点图使用colormap

import matplotlib.pyplot as plt
import numpy as np

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

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

Output:

matplotlib colormaps

6. 等高线图使用colormap

import matplotlib.pyplot as plt
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(X) * np.cos(Y)

plt.contourf(X, Y, Z, cmap='jet')
plt.colorbar()
plt.show()

Output:

matplotlib colormaps

7. 3D图使用colormap

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

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='RdBu')
plt.show()

Output:

matplotlib colormaps

8. 箱形图使用colormap

import matplotlib.pyplot as plt
import numpy as np

data = np.random.rand(100, 4)
labels = ['A', 'B', 'C', 'D']

plt.boxplot(data, patch_artist=True, notch=True, showmeans=True,
            boxprops=dict(facecolor='orange', color='blue'),
            whiskerprops=dict(color='green', linewidth=2),
            capprops=dict(color='red', linewidth=2))
plt.xticks(range(1, len(labels)+1), labels)
plt.show()

Output:

matplotlib colormaps

9. 热力图使用colormap

import matplotlib.pyplot as plt
import numpy as np

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

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

Output:

matplotlib colormaps

10. 柱状图使用colormap

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.random.rand(5)

plt.bar(x, y, color=plt.cm.viridis(y))
plt.show()

Output:

matplotlib colormaps

11. 饼图使用colormap

import matplotlib.pyplot as plt
import numpy as np

labels = ['A', 'B', 'C', 'D']
sizes = [25, 35, 20, 20]

colors = plt.cm.viridis(np.arange(len(sizes)) / len(sizes))

plt.pie(sizes, labels=labels, colors=colors, autopct='%1.0f%%')
plt.show()

Output:

matplotlib colormaps

12. 气泡图使用colormap

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(100)
y = np.random.rand(100)
size = np.random.rand(100) * 100
color = np.random.rand(100)

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

Output:

matplotlib colormaps

13. 条形图使用colormap

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.random.rand(5)

plt.barh(x, y, color=plt.cm.jet(y))
plt.show()

Output:

matplotlib colormaps

14. 区域图使用colormap

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.fill_between(x, y1, y2, where=(y1 > y2), interpolate=True, color='blue', alpha=0.5)
plt.fill_between(x, y1, y2, where=(y1 < y2), interpolate=True, color='orange', alpha=0.5)
plt.show()

Output:

matplotlib colormaps

15. 雷达图使用colormap

import matplotlib.pyplot as plt
import numpy as np

labels = ['A', 'B', 'C', 'D', 'E']
values = [5, 8, 6, 7, 9]

# 将最后一个点与第一个点相连,使雷达图闭合
angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False).tolist()
values += values[:1]
angles += angles[:1]

fig, ax = plt.subplots(subplot_kw={'polar': True})
ax.fill(angles, values, color='blue', alpha=0.25)
ax.set_yticks([3, 6, 9])
plt.show()

Output:

matplotlib colormaps

16. 水平线图使用colormap

import matplotlib.pyplot as plt

y = [1, 2, 3, 4, 5]
x = [0.5, 1, 1.5, 2, 2.5]

plt.hlines(y, 0, x, color=plt.cm.jet(y), alpha=0.5)
plt.show()

Output:

matplotlib colormaps

17. 面积图使用colormap

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.stackplot(x, y1, y2, colors=['blue', 'orange'])
plt.show()

Output:

matplotlib colormaps

18. 散点密度图使用colormap

import matplotlib.pyplot as plt
import numpy as np

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

plt.hexbin(x, y, gridsize=30, cmap='viridis')
plt.colorbar()
plt.show()

Output:

matplotlib colormaps

19. 蜂窝图使用colormap

import matplotlib.pyplot as plt
import numpy as np

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

plt.hexbin(x, y, gridsize=30, cmap='viridis', edgecolors='black')
plt.colorbar()
plt.show()

Output:

matplotlib colormaps

20. 箭头图使用colormap

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 10)
y = np.linspace(0, 10, 10)
u = np.ones_like(x)
v = np.zeros_like(y)

plt.quiver(x, y, u, v, scale=10, cmap='viridis')
plt.show()

Output:

matplotlib colormaps

通过以上示例代码,我们可以看到在不同类型的图表中如何使用colormaps,为数据可视化添加丰富的颜色信息,使得数据更加直观和易于理解。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程