gpt4 book ai didi

python - 在 matplotlib 中使颜色变暗或变亮

转载 作者:太空狗 更新时间:2023-10-29 17:58:33 27 4
gpt4 key购买 nike

假设我在 Matplotlib 中有一种颜色。也许它是一个字符串 ('k') 或一个 rgb 元组 ((0.5, 0.1, 0.8)) 或者甚至是一些十六进制 (#05FA2B ). Matplotlib 中是否有一个命令/便利函数可以让我加深(或变亮)那种颜色。

即有没有 matplotlib.pyplot.darken(c, 0.1) 之类的东西?我想我希望的是在幕后采用一种颜色,将其转换为 HSL,然后将 L 值乘以某个给定因子(下限为 0,上限为 1)或明确设置 L value 为给定值并返回修改后的颜色。

最佳答案

这是来自 my gist 的函数使我认为适用于 matplotlib 已知的任何颜色格式的任何颜色变亮。我认为将数量设置为 > 1 也可能会变暗。

def lighten_color(color, amount=0.5):
"""
Lightens the given color by multiplying (1-luminosity) by the given amount.
Input can be matplotlib color string, hex string, or RGB tuple.

Examples:
>> lighten_color('g', 0.3)
>> lighten_color('#F034A3', 0.6)
>> lighten_color((.3,.55,.1), 0.5)
"""
import matplotlib.colors as mc
import colorsys
try:
c = mc.cnames[color]
except:
c = color
c = colorsys.rgb_to_hls(*mc.to_rgb(c))
return colorsys.hls_to_rgb(c[0], 1 - amount * (1 - c[1]), c[2])

编辑:确实,它确实变暗了也变亮了:

import matplotlib.pyplot as plt
import numpy as np

xs = np.linspace(-1, 1, 100)
plt.plot(xs, 0 * xs, color='b', lw=3)
plt.plot(xs, xs**2, color=lighten_color('b', 0.4), lw=3)
plt.plot(xs, -xs**2, color=lighten_color('b', 1.6), lw=3)

image with example of darken and lighten

编辑 2: 删除了函数中不需要的 numpy 依赖项。

编辑 3:通过@FLekschas 的改进修改函数

def adjust_lightness(color, amount=0.5):
import matplotlib.colors as mc
import colorsys
try:
c = mc.cnames[color]
except:
c = color
c = colorsys.rgb_to_hls(*mc.to_rgb(c))
return colorsys.hls_to_rgb(c[0], max(0, min(1, amount * c[1])), c[2])

关于python - 在 matplotlib 中使颜色变暗或变亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37765197/

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