如何旋转散点数据点的颜色图

问题描述 投票:0回答:2

我在实施想法时遇到了问题。我需要使色彩图成为散点的对角线,因此右上角只有绿色,左下角将是红色,黄色将从左上角到右下角贯穿整个绘图。现在只有颜色图垂直的选项我无法使用。 我现在的绘图结果已附在这篇文章中。

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))

我尝试将图像(对角线中从红色到绿色的颜色)应用到图中的数据点。因此,我尝试以某种方式改变颜色图的位置,即黄色将位于对角线中。

非常感谢您抽出时间。我想听听你会如何解决我的想法

python matplotlib scatter-plot colormap
2个回答
0
投票

根据您的数据定义颜色列表。

这里我计算每个点距 (0,0) 的欧氏距离。您可能需要对您的数据执行其他操作。

import numpy as np
import matplotlib.pyplot as plt

x = np.random.rand(100)
y = np.random.rand(100)
colours = [np.sqrt(x[i]**2+y[i]**2) for i in range(len(x))]

plt.scatter(x, y, c=colours, ec='k', cmap="RdYlGn")


0
投票

这是一个将颜色图沿对角线穿过绘图的简单示例。它本质上是根据距原点的对角线(梯度为 -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()

© www.soinside.com 2019 - 2024. All rights reserved.