白色还是深色-> 黑色(cen-6ren">
gpt4 book ai didi

python-2.7 - 使用 "midrange"而不是 "midpoint"创建发散调色板

转载 作者:行者123 更新时间:2023-12-04 00:51:36 29 4
gpt4 key购买 nike

我正在使用 python seaborn 包来生成发散的调色板 (seaborn.diverging_palette)。

我可以选择我的两种末端颜色,并定义中心是浅-> 白色还是深色-> 黑色(center 参数)。但是我想要的是将这个中心部分的颜色(在我的例子中是白色)扩展到给定的值范围。

例如,我的值是从 0 到 20。所以,我的中点是 10。因此,只有 10 是白色的,然后到 0/20 时它会变得更绿/更蓝。我想将白色保持在 7 到 13(midpont 之前/之后 3),然后开始移动到绿色/蓝色。

我找到了 sep参数,用于扩展或减少此中心白色部分。但是我找不到任何关于它的值的含义的解释,以便找到 sep 的哪个值。例如,将对应于中点的每侧 3。

有人知道 sep 和值(value)尺度之间的关系吗?
或者如果另一个参数可以做预期的行为?

最佳答案

看来sep参数可以采用 1 之间的任何整数和 254 .将被中点颜色覆盖的颜色图的部分将等于 sep/256 .

也许一个简单的可视化方法是使用 seaborn.palplot , 与 n=256将调色板分成 256 种颜色。

这是一个带有 sep = 1 的调色板:

sns.palplot(sns.diverging_palette(0, 255, sep=1, n=256))

enter image description here

这是一个带有 sep = 8 的调色板
sns.palplot(sns.diverging_palette(0, 255, sep=8, n=256))

enter image description here

这是 sep = 64 (即调色板的四分之一是中点颜色)
sns.palplot(sns.diverging_palette(0, 255, sep=64, n=256))

enter image description here

这是 sep = 128 (即一半是中点颜色)
sns.palplot(sns.diverging_palette(0, 255, sep=128, n=256))

enter image description here

这里是 sep = 254 (即除了调色板最边缘的颜色之外的所有颜色都是中点颜色)
sns.palplot(sns.diverging_palette(0, 255, sep=254, n=256))

enter image description here

您的特定调色板

因此,对于您的范围为 0 - 20 的情况,但中点范围为 7 - 13 ,您可能希望调色板的分数作为中点为 6/20 .将其转换为 sep ,我们需要乘以 256,所以我们得到 sep = 256 * 6 / 20 = 76.8 .然而, sep必须是整数,所以让我们使用 77 .

这是一个制作发散调色板的脚本,并绘制一个颜色条以显示使用 sep = 77在 7 和 13 之间留下正确的中点颜色:
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

# Create your palette
cmap = sns.diverging_palette(0,255,sep=77, as_cmap=True)

# Some data with a range of 0 to 20
x = np.linspace(0,20,20).reshape(4,5)

# Plot a heatmap (I turned off the cbar here, so I can create it later with ticks spaced every integer)
ax = sns.heatmap(x, cmap=cmap, vmin=0, vmax=20, cbar = False)

# Grab the heatmap from the axes
hmap = ax.collections[0]

# make a colorbar with ticks spaced every integer
cmap = plt.gcf().colorbar(hmap)
cmap.set_ticks(range(21))

plt.show()

enter image description here

关于python-2.7 - 使用 "midrange"而不是 "midpoint"创建发散调色板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35869150/

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