Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách chuyển đổi số sang thang màu (color scale) trong Matplotlib

Á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.