我在实施想法时遇到了问题。我需要使色彩图成为散点的对角线,因此右上角只有绿色,左下角将是红色,黄色将从左上角到右下角贯穿整个绘图。现在只有颜色图垂直的选项我无法使用。 我现在的绘图结果已附在这篇文章中。
x_target = df_target[x_stat]
y_target = df_target[y_stat]
x_rest = df_rest[x_stat]
y_rest = df_rest[y_stat]
fig, ax = plt.subplots(figsize=(w, h))
cmap = mpl.colors.LinearSegmentedColormap.from_list('dyag', ["#e64c4b", "#FFA500", "#64c0b3"], N=256)
# Normalize x values
norm = plt.Normalize(vmin=df_scatters[x_stat].min(), vmax=df_scatters[x_stat].max())
# Plotting data points
sc = ax.scatter(x_rest, y_rest, c=x_rest, s=50, cmap=cmap, norm=norm)
sc = ax.scatter(x_target, y_target, c=x_target, s=80, cmap=cmap, norm=norm)
# Set figure and axes background color
fig.set_facecolor('white')
ax.set_facecolor('white')
ax.set_xlim((x_min_label, x_max_label))
ax.set_ylim((y_min_label, y_max_label))
我尝试将图像(对角线中从红色到绿色的颜色)应用到图中的数据点。因此,我尝试以某种方式改变颜色图的位置,即黄色将位于对角线中。
非常感谢您抽出时间。我想听听你会如何解决我的想法
这是一个将颜色图沿对角线穿过绘图的简单示例。它本质上是根据距原点的对角线(梯度为 -1)的距离来设置颜色值:
from matplotlib import pyplot as plt
import matplotlib as mpl
import numpy as np
x = np.random.rand(1000)
y = np.random.rand(1000)
cmap = mpl.colors.LinearSegmentedColormap.from_list('dyag', ["#e64c4b", "#FFA500", "#64c0b3"], N=256)
fig, ax = plt.subplots()
ax.scatter(x, y, c=((x + y) / np.sqrt(2)), cmap=cmap)
fig.show()