如何解决matplotlib颜色值转RGB时to_rgb方法失效问题
问题原因
你看到的((0.19215686274509805, 0.5098039215686274, 0.7411764705882353))双括号格式只是打印输出的显示效果,实际plt.cm.tab20c.colors存储的是取值范围在0~1之间的归一化RGB浮点三元组。matplotlib.colors.to_rgb()接收到符合格式要求的RGB输入时会直接返回原值,因此会看起来像"没有正常生效"。
可行解决方案
根据你需要的RGB格式选择对应写法即可:
如果需要matplotlib生态通用的0~1范围归一化RGB:
你的原有写法本身是正确的,返回结果可以直接传入所有matplotlib的颜色相关参数使用。如果使用低于3.1.0的旧版matplotlib出现元组识别异常,可以把颜色值转为列表再传入提升兼容性:import matplotlib from matplotlib import pyplot as plt cycler = plt.cycler("color", plt.cm.tab20c.colors)() color = next(cycler)['color'] # 旧版本兼容写法 color_rgb = matplotlib.colors.to_rgb(list(color))如果需要通用场景常用的0~255范围整数RGB:
对归一化的三个通道值分别乘255后取整即可:import matplotlib from matplotlib import pyplot as plt cycler = plt.cycler("color", plt.cm.tab20c.colors)() color = next(cycler)['color'] norm_rgb = matplotlib.colors.to_rgb(color) # 转换为0-255整数RGB color_rgb_255 = tuple(int(channel * 255) for channel in norm_rgb) # 你给出的示例颜色转换后结果为(49, 130, 189)
内容的提问来源于stack exchange,提问作者Natasha
相关产品推荐
相关产品推荐

