gpt4 book ai didi

python - Matplotlib - 让颜色条与绘图中的颜色对齐并使用原始值作为标签

转载 作者:行者123 更新时间:2023-12-05 07:17:20 24 4
gpt4 key购买 nike

我有一个包含两个值的数据框 x1x2 ,这些点中的每一个都有一个类标签。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.axes_grid1 import make_axes_locatable
from sklearn.preprocessing import normalize

# Random data
np.random.seed(0)
test_df = pd.DataFrame(data=np.random.randint(1, 11, (100, 2)), columns=['x1', 'x2'])
test_df['class'] = np.random.randint(1, 25, 100) # What I want to plot as colors
test_df['norm_class'] = normalize(test_df['class'].values.reshape(-1, 1), norm='max', axis=0)
test_df.head()

数据框输出:

    x1  x2  class   norm_class
0 6 1 24 1.000000
1 4 4 22 0.916667
2 8 10 20 0.833333
3 4 6 15 0.625000
4 3 5 21 0.875000

我想绘制x1x2二维点并将类标签用作点的连续颜色,因此我将 class 归一化,根据归一化值创建颜色图,并将其与颜色条一起绘制:

# Create colormap 
response_norm_colors = [cm.viridis(x) for x in test_df['norm_class'].values]

# Plot x1 and x2 as 2 dimensions, with color as "third" dimension
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(1, 1, 1)

divider = make_axes_locatable(ax)
cax = divider.append_axes('right', size='5%', pad=0.05)

sctr = ax.scatter(test_df['x1'], test_df['x2'], c=response_norm_colors)

fig.colorbar(sctr, cax=cax, orientation='vertical')

plt.show()
plt.close()

显然,我的颜色在散点图和颜色条之间不匹配。我还希望颜色条比例适用于原始 class在我将它们归一化之前的值。

enter image description here

  1. 如何让颜色条的颜色图与我在散点图 (viridis) 中使用的颜色图相匹配?
  2. 如何将原始的非标准化值 ( test_df['class'] ) 列为颜色条的比例,而不是 [0, 1] 区间?

最佳答案

您的代码在我这边运行得非常好。

enter image description here

关于python - Matplotlib - 让颜色条与绘图中的颜色对齐并使用原始值作为标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58828017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com