我想更改规则,该规则使用matplotlib在热图中将数字值转换为颜色。
在我的数据中,每个点都是2个玩家的策略(A,R)的组合。例如。玩家1偏好策略R的概率为63%,玩家2偏好策略R的概率为52%。在那种情况下,我希望点是下一个颜色:255 * 0.63红色,255 * 0.52绿色,0蓝色。
我可以使用matplotlib实现吗?我知道,我可以设置自定义颜色图,但实际上它只是颜色列表(不是图),因此它不允许覆盖从数字到颜色的映射。或者我需要在颜色栏中列出所有带有红色和绿色阴影的所有颜色?
在这种情况下如何显示颜色栏?可能应该是二维的(因为红色和绿色会独立增加
我试图显示随意的热图,将策略概率转换为数字:
255 ^ 3 * probablity(R1) + 255 ^ 2 * probability(R2)
但是问题是颜色条中的颜色,当第二位玩家选择R策略太接近点时,当两位玩家都选择A策略时
def strategy_value(probs):
return round(probs[0][1] * 255) * 255 ** 2 + round(props[1][1] * 255) * 255
data = {
'Lambda': [],
'Mu': [],
'Value': []
}
x_ticks = [round(x, 2) for x in np.linspace(0.01, 3, 10)]
y_ticks = [round(x, 2) for x in np.linspace(0.01, 3, 10)]
for mu in y_ticks:
for l in x_ticks:
data['Lambda'].append(l)
data['Mu'].append(mu)
data['Value'].append(strategy_value(G[l][mu]))
data = pd.DataFrame(data).pivot('Lambda', 'Mu', 'Value')
sns.heatmap(data, ax=ax, vmin=0, vmax=255**3 + 255 ** 2)
cbar = ax.collections[0].colorbar
cbar.set_ticks([0, 255 ** 2, 255 ** 3, 255 ** 3 + 255 ** 2])
cbar.set_ticklabels(['AA', 'AR', 'RA', 'RR'])