Ánh xạ giá trị số sang màu bằng Normalize và ScalarMappable.
- Tạo x, y, c ngẫu nhiên.
- DataFrame df với cột x, y, c.
- fig, ax = subplots().
- cmap = plt.cm.hot, norm = colors.Normalize(vmin=2.0, vmax=5.0).
- ax.scatter(df.x, df.y, color=cmap(norm(df.c.values))).
- ax.set_xticks(df.x).
- sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm), fig.colorbar(sm).
- show().
Ví dụ
from matplotlib import pyplot as plt, colors
import numpy as np
import pandas as pd
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.arange(12)
y = np.random.rand(len(x)) * 20
c = np.random.rand(len(x)) * 3 + 1.5
df = pd.DataFrame({"x": x, "y": y, "c": c})
fig, ax = plt.subplots()
cmap = plt.cm.hot
norm = colors.Normalize(vmin=2.0, vmax=5.0)
ax.scatter(df.x, df.y, color=cmap(norm(df.c.values)))
ax.set_xticks(df.x)
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
fig.colorbar(sm)
plt.show()
Kết quả
Scatter plot các điểm màu theo giá trị c, với colorbar thang hot từ 2.0 đến 5.0.