python的颜色表,在Python中生成颜色范围

I want to generate a list of color specifications in the form of (r, g, b) tuples, that span the entire color spectrum with as many entries as I want. So for 5 entries I would want something like:

(0, 0, 1)

(0, 1, 0)

(1, 0, 0)

(1, 0.5, 1)

(0, 0, 0.5)

Of course, if there are more entries than combination of 0 and 1 it should turn to use fractions, etc. What would be the best way to do this?

解决方案

Use the HSV/HSB/HSL color space (three names for more or less the same thing). Generate N tuples equally spread in hue space, then just convert them to RGB.

Sample code:

import colorsys

N = 5

HSV_tuples = [(x*1.0/N, 0.5, 0.5) for x in range(N)]

RGB_tuples = map(lambda x: colorsys.hsv_to_rgb(*x), HSV_tuples)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python,可以使用Matplotlib的颜色映射(colormap)来将数据映射为颜色。Matplotlib内置了很多颜色映射,例如`jet`、`coolwarm`、`viridis`等。可以使用`matplotlib.cm`模块的函数来获取这些内置的颜色映射对象。 对于给定的数据,可以使用`matplotlib.colors.Normalize`函数将数据归一化到[0, 1]的范围内。然后,使用颜色映射对象将归一化后的数据映射为颜色。具体来说,可以使用`matplotlib.cm.ScalarMappable`类来创建一个可映射的对象,然后使用`set_array`方法将数据传递给它。最后,调用`colorbar`函数来添加颜色条。 下面是一个示例: ``` python import numpy as np import matplotlib.pyplot as plt import matplotlib.colors as colors import matplotlib.cm as cm # 生成一些数据 x = np.linspace(-1, 1, 100) y = np.linspace(-1, 1, 100) X, Y = np.meshgrid(x, y) Z = np.sin(np.pi*X)*np.cos(np.pi*Y) # 归一化数据 norm = colors.Normalize(vmin=-1, vmax=1) # 创建一个颜色映射对象 cmap = cm.ScalarMappable(norm=norm, cmap=cm.jet) # 绘制图像 fig, ax = plt.subplots() im = ax.imshow(Z, cmap=cmap) # 添加颜色条 cbar = fig.colorbar(im, ax=ax) cbar.set_label('My colorbar') plt.show() ``` 在这个例子,我们首先生成了一些数据`Z`,然后使用`Normalize`函数将数据归一化到[-1, 1]的范围内。接下来,我们创建了一个颜色映射对象`cmap`,并使用`ScalarMappable`类将其与归一化后的数据关联起来。然后,使用`imshow`函数绘制图像,并将颜色映射对象传递给它。最后,使用`colorbar`函数添加颜色条,并设置了标签。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值