gpt4 book ai didi

python - 如何在 Python 中创建颜色渐变?

转载 作者:IT老高 更新时间:2023-10-28 20:29:28 24 4
gpt4 key购买 nike

我想创建一个在绿色和蓝色(或任何其他两种颜色)之间插值的新颜色图。我的目标是获得类似:gradient

首先,我真的不确定这是否可以使用蓝色和绿色的线性插值来完成。如果可以,我不知道该怎么做,我找到了一些关于使用 matplotlib 方法插入指定 RGB 值 here 的文档

真正的麻烦在于理解下面的“cdict2”是如何工作的。例如,文档说:

“示例:假设您希望红色在下半部分从 0 增加到 1,绿色在中半部分执行相同的操作,蓝色在上半部分执行。那么您将使用:”

from matplotlib import pyplot as plt
import matplotlib
import numpy as np

plt.figure()
a=np.outer(np.arange(0,1,0.01),np.ones(10))
cdict2 = {'red': [(0.0, 0.0, 0.0),
(0.5, 1.0, 1.0),
(1.0, 1.0, 1.0)],
'green': [(0.0, 0.0, 0.0),
(0.25, 0.0, 0.0),
(0.75, 1.0, 1.0),
(1.0, 1.0, 1.0)],
'blue': [(0.0, 0.0, 0.0),
(0.5, 0.0, 0.0),
(1.0, 1.0, 1.0)]}
my_cmap2 = matplotlib.colors.LinearSegmentedColormap('my_colormap2',cdict2,256)
plt.imshow(a,aspect='auto', cmap =my_cmap2)
plt.show()

编辑:我现在了解插值是如何工作的,例如这将给出一个红色到白色的插值:

从白色到红色:沿着每种颜色的“矩阵”列向下,在第一列中,我们有我们希望插值开始和结束位置的 x 坐标,另外两列是颜色值的实际值在那个坐标。

cdict2 = {'red':   [(0.0,  1.0, 1.0),
(1.0, 1.0, 1.0),
(1.0, 1.0, 1.0)],
'green': [(0.0, 1.0, 1.0),
(1.0, 0.0, 0.0),
(1.0, 0.0, 0.0)],
'blue': [(0.0, 1.0, 1.0),
(1.0, 0.0, 0.0),
(1.0, 0.0, 0.0)]}

很明显,我想要的渐变将很难通过在 RGB 空间中插值来创建...

最佳答案

我还没有看到的一个简单答案是使用 colour package .

通过 pip 安装

pip install colour

照这样使用:

from colour import Color
red = Color("red")
colors = list(red.range_to(Color("green"),10))

# colors is now a list of length 10
# Containing:
# [<Color red>, <Color #f13600>, <Color #e36500>, <Color #d58e00>, <Color #c7b000>, <Color #a4b800>, <Color #72aa00>, <Color #459c00>, <Color #208e00>, <Color green>]

将输入更改为您想要的任何颜色。正如@zelusp 所指出的,这不会将自己限制为只有两种颜色的平滑组合(例如,红色到蓝色的中间会有黄色+绿色),但根据赞成票,它很明显是一个数字的人发现这是一个有用的近似值

关于python - 如何在 Python 中创建颜色渐变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25668828/

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