生成【颜色不相近】的一组随机颜色的 Python 实现

生成【颜色不相近】的一组随机颜色的 Python 实现

如何使用 Python 生成一组不相邻的随机颜色,并使用 Matplotlib 将它们可视化。

首先,定义一个函数 generate_random_color,该函数生成一个带有足够颜色通道差异的随机RGB颜色,确保与之前生成的颜色不相邻。

import random
import math
import matplotlib.pyplot as plt

def generate_random_color(min_distance=0.2, previous_colors=None, max_attempts=100):
    """生成一个带有足够颜色通道差异的随机RGB颜色,确保与之前生成的颜色不相邻。"""
    def color_distance(color1, color2):
        """计算两个颜色之间的欧氏距离。"""
        return math.sqrt(sum((c1 - c2) ** 2 for c1, c2 in zip(color1, color2)))

    if previous_colors is None:
        previous_colors = []

    if not previous_colors:
        return (random.random(), random.random(), random.random())

    for _ in range(max_attempts):
        r = random.random()
        g = random.random()
        b = random.random()

        min_distance_to_previous = min(color_distance(new_color, prev_color) for new_color in ((r, g, b),) for prev_color in previous_colors)

        if min_distance_to_previous >= min_distance:
            return (r, g, b)

    return None

接下来,使用这个函数生成了一组不相近的随机颜色,并通过 Matplotlib 将它们可视化。

# 示例用法
previous_colors = []
for _ in range(10):
    color = generate_random_color(min_distance=0.3, previous_colors=previous_colors)
    previous_colors.append(color)

# 显示生成的颜色
fig, ax = plt.subplots()

for i, color in enumerate(previous_colors):
    ax.scatter([i], [0], c=[color], s=100, label=f"Color {i+1}")

ax.legend()
plt.show()

在上述示例中,生成了10个不相邻的随机颜色,并通过 Matplotlib 将它们以散点图的形式展示出来。每个颜色点都使用不同的标签进行区分。

希望这个示例对你有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值