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

qltillow  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(119)

我得到的问题与实施的想法.我需要使colormap是对角线的散射,所以在右上角将只有绿色的颜色,左下角将是红色和黄色将通过图从左上角到右下角.现在只有选项colormap是垂直的,我不能使用.图的结果,我现在有我附在这篇文章.

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

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

1zmg4dgp

1zmg4dgp1#

下面是一个简单的例子,它将颜色Map对角地分布在图上。它基本上是根据对角线(梯度为-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()

yvt65v4c

yvt65v4c2#

根据您的数据定义颜色列表。
此操作计算与对角线的距离。您可能需要根据现有数据调整计算。

import numpy as np
import matplotlib.pyplot as plt

x = np.random.rand(100)
y = np.random.rand(100)
colours = (x + y)/np.sqrt(2)

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

相关问题