python colors怎么用,有哪些常用方法

Python处理颜色的核心在于掌握RGB、HEX、HSL等颜色模型的转换,以及使用matplotlib、PIL、colorama等库实现灵活的颜色控制。

Python颜色表示方法:理解颜色模型

在操作颜色之前,你需要先了解计算机描述颜色的几种方式,最常见的是RGB、HEX、HSL和HSV,每种模型在不同场景下各有优势,理解它们能帮你更准确地选择或转换颜色。

文本颜色设置|Python 基础实战100例·第39期
加载中
文本颜色设置|Python 基础实战100例·第39期

RGB模型

RGB用三个0-255的整数表示红绿蓝分量,是大多数图像和硬件的基础,Python中很多库直接接受RGB元组,例如matplotlib的color参数,如果你从图像中读取像素,通常得到的就是RGB值。

十六进制代码

HEX格式是#RRGGBB,Web开发中最常用,也常用于颜色代码的简洁表示,Python中处理HEX时,注意字符串是否包含,部分库要求不带。#FF5733是橙色,可以直接用在matplotlib中。

HSL与HSV

HSL(色相、饱和度、亮度)和HSV(色相、饱和度、明度)更符合人类直觉,行业共识认为,在数据可视化中,HSL比RGB更容易调整颜色渐变,因为色调、饱和度和亮度可以独立控制,Python的colorsys模块提供了RGB到HSL的转换,掌握后能帮你轻松生成配色方案,比如创建一组渐变色。

Python颜色代码转换:从RGB到HEX的详细步骤

颜色转换是开发中的常见需求,无论你是从图片提取颜色,还是为网页生成主题,掌握RGB、HEX、HSL之间的互转都很有用。

使用内置函数转换

标准库colorsys支持RGB与HSL、HSV互转,但RGB与HEX的转换通常需要手动实现,下面是一个基本的转换函数,适合大多数场景:

def rgb_to_hex(r, g, b):
    return '#{:02x}{:02x}{:02x}'.format(r, g, b)
def hex_to_rgb(hex_code):
    hex_code = hex_code.lstrip('#')
    return tuple(int(hex_code[i:i+2], 16) for i in (0, 2, 4))

如果需要批量转换,建议封装成类或使用列表推导式。

使用matplotlib.colors转换

matplotlib内置了颜色转换工具。rgb2hex()和hex2color()可以轻松完成转换,注意matplotlib的RGB分量是0-1浮点数,与标准0-255整数不同,使用时需要先归一化:

from matplotlib.colors import rgb2hex, hex2color
hex_color = rgb2hex((0.5, 0.5, 0.5))  # 输出 '#808080'
rgb = hex2color('#FF0000')  # 输出 (1.0, 0.0, 0.0)

如果你需要将0-255的RGB转换为十六进制,可以先除以255再传入rgb2hex。

使用Pillow的ImageColor转换

Pillow的ImageColor模块同样支持颜色名称、十六进制和RGB之间的转换,而且返回的RGB是0-255整数,更符合直觉:

from PIL import ImageColor
# 十六进制转RGB
rgb = ImageColor.getrgb('#FF0000')  # (255, 0, 0)
# 颜色名称转RGB
rgb = ImageColor.getrgb('red')  # (255, 0, 0)

python colors怎么用,有哪些常用方法

这个库在图像处理中特别方便,无需额外计算。

使用colorsys转换HSL

colorsys是Python内置的颜色空间转换模块,它支持RGB到HLS、HSV的转换,下面是一个RGB转HSL的示例,适合需要调整颜色亮度的场景:

import colorsys
r, g, b = 255, 0, 0  # 红色
h, l, s = colorsys.rgb_to_hls(r/255, g/255, b/255)
print(h, l, s)  # 输出色相、亮度、饱和度

同样的,colorsys.rgb_to_hsv()可用于转换到HSV。

使用webcolors转换颜色名称

如果你需要将颜色名称(如”lightblue”)转换为代码,webcolors是最佳选择,安装后使用:

import webcolors
hex_color = webcolors.name_to_hex('red')  # '#FF0000'
rgb = webcolors.name_to_rgb('red')  # RGB(255, 0, 0)

它还支持反向查询,比如从RGB或HEX获取颜色名称,非常适合需要颜色名称映射的场景,比如在Web开发中根据用户输入的颜色名称生成对应代码。

Python颜色库对比:主流工具的选择指南

Python生态中有多个颜色处理库,每个库侧重不同,选择合适的库能提升效率,下面我对比几个常用库,帮你做出更适合的选择。

matplotlib

matplotlib是数据可视化的首选,内置超过150种颜色映射(colormap),支持颜色名称、十六进制、RGB、HSL等多种格式,它的colormaps模块提供丰富的颜色序列,适合绘制热力图、散点图等,如果你需要颜色映射,plt.cm.Spectral或plt.cm.viridis是常用选择。

Pillow

Pillow(PIL)是图像处理的标准库,ImageColor模块可以解析各种颜色字符串,Image对象支持像素级操作,如果你需要从图像中提取颜色、修改颜色或进行颜色空间转换,Pillow是必需工具。ImageColor.getrgb('lightblue')可以直接返回RGB元组。

colorama

colorama专注于终端彩色输出,支持Windows、Linux、macOS,它通过Fore、Back、Style三个类提供基本的颜色和样式控制,适合命令行工具、日志输出等场景,安装后,只需在print前添加颜色前缀即可。

webcolors

webcolors是一个轻量级库,专门处理颜色名称与代码之间的转换,它支持CSS颜色名称,并提供了name_to_hex、hex_to_name等方法,如果你的项目需要根据颜色名称查找代码,或者反之,webcolors是最直接的选择。

对比表格

python colors怎么用,有哪些常用方法

库名称 主要功能 适用场景 易用性
matplotlib 颜色映射、转换、命名颜色 数据可视化、绘图 较高
Pillow 图像颜色分析、修改 图像处理、像素操作 中等
colorama 终端彩色输出 命令行工具、日志 简单
webcolors 颜色名称与代码互转 Web开发、颜色名称解析 简单
colorsys 颜色模型转换 基础转换需求 简单

业内专家指出,在大多数项目中,你不需要同时使用所有库,根据需求挑选一个即可,做数据可视化时,matplotlib的颜色功能已经足够强大;而处理图像时,Pillow是唯一选择,如果你只需要终端彩色,colorama就是最轻量的方案。

Python颜色设置方法:绘图与终端实际应用

理论讲完,我们来看实际应用,颜色设置的方法因场景而异,这里我重点介绍绘图和终端两种常见场景,并补充图像处理中的用法。

在matplotlib中设置颜色

matplotlib接受多种颜色格式:颜色名称('red')、十六进制字符串('#FF0000')、RGB元组((1.0,0.0,0.0))以及灰度值('0.5'),在绘图时,通过color参数指定:

import matplotlib.pyplot as plt
plt.plot([1,2,3], [4,5,6], color='#FF5733')

使用颜色映射时,可以调用cmap参数,并指定一个colormap名称,散点图根据数值映射颜色:

import numpy as np
x = np.linspace(0, 10, 100)
plt.scatter(x, np.sin(x), c=x, cmap='viridis')
plt.colorbar()

matplotlib提供超过150种colormap,你可以通过plt.colormaps()查看所有可用名称,选择时,建议使用色盲友好的colormap,如viridis、plasma、inferno。

在Seaborn中设置颜色主题

Seaborn基于matplotlib,提供了更美观的默认主题,你可以通过set_palette()更改颜色调色板,Seaborn支持多种调色板类型,如deep、muted、bright、pastel、dark等,也可以直接传入颜色列表。

import seaborn as sns
sns.set_palette('hls')  # 使用HSL均匀分配色相
sns.set_palette(['#FF5733', '#33FF57', '#3357FF'])  # 自定义颜色列表

如果你需要为不同类别指定颜色,Seaborn的color_palette()函数可以快速生成离散颜色序列。

在Pandas中设置DataFrame颜色

Pandas的style属性允许你为DataFrame添加颜色,实现条件格式,高亮最大值:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df.style.highlight_max(color='lightgreen')

python colors怎么用,有哪些常用方法

你也可以自定义颜色映射,用于数据预览或报告生成。

在终端中输出彩色文字

使用colorama可以轻松在终端输出彩色文字,安装后用pip install colorama,

from colorama import Fore, Back, Style, init
init(autoreset=True)
print(Fore.RED + '这是红色文字')
print(Back.YELLOW + '黄色背景')
print(Style.DIM + '暗淡样式')

colorama支持Fore(前景色)、Back(背景色)和Style(样式),颜色包括BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE,通过init(autoreset=True)可以自动重置样式,避免影响后续输出。

如果你需要更丰富的颜色,可以结合ANSI转义码,但colorama已经覆盖了大部分需求,在日志输出中,使用不同颜色区分日志级别,能让排查问题更高效。

在图像处理中修改颜色

Pillow的ImageColor模块可以解析颜色字符串,并返回RGB元组:

from PIL import ImageColor
rgb = ImageColor.getrgb('lightblue')  # (173, 216, 230)

在图像处理中,你可以通过Image.point()或Image.eval()对每个像素进行颜色变换,但更常见的是使用ImageFilter或ImageEnhance来调整色彩平衡,如果需要颜色空间转换,Pillow提供了Image.convert()方法,例如将RGB转换为HSV。

Python颜色处理常见问题解答

如何将十六进制颜色转换为RGB?

使用matplotlib的hex2color或上述自定义函数,注意matplotlib返回的是0-1之间的浮点数,而标准RGB是0-255整数,需要乘以255并取整,如果你使用webcolors,可以用hex_to_rgb。

matplotlib中如何获取所有可用的颜色名称?

调用matplotlib.colors.cnames字典,它包含所有内置颜色名称与十六进制代码的映射,你也可以使用plt.colormaps()获取所有颜色映射名称,如果需要颜色名称列表,可以打印cnames.keys(),例如['aliceblue', 'antiquewhite', ...]。

colorama是否支持所有终端?

colorama在Windows、Linux、macOS的主流终端中都能正常工作,包括cmd、PowerShell、bash、zsh等,但某些旧终端或自定义终端可能不支持ANSI转义序列,需要添加init(convert=True)参数,将转义序列转换为Windows API调用。


掌握Python颜色处理,相当于给代码穿上了一件得体的外衣,无论是数据分析、Web开发还是日常脚本,合理运用颜色都能让你的输出更清晰、更具表现力。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/511357.html

赞 (0)
融合CDN是什么?,融合CDN与传统CDN相比有哪些优势?
上一篇 2026年7月22日 09:41
迅雷cdn怎么赚钱?迅雷cdn挂机收益高吗?
下一篇 2026年7月22日 09:44

相关推荐

  • 防火墙设置中,究竟如何轻松实现应用程序的开启与关闭?

    要开启或关闭防火墙对应用程序的访问权限,您需要在防火墙设置中手动添加规则,允许或阻止特定程序的网络连接,具体操作路径因操作系统而异,但核心原理相通:通过配置入站与出站规则,控制应用程序能否通过防火墙通信,下面以Windows系统为例提供详细步骤,其他系统(如macOS、主流Linux发行版)思路类似,可在系统设……

    2026年2月4日
    12900
  • 服务器怎么安装XP系统?,安装步骤是什么?

    在服务器上直接安装Windows XP是一项高风险操作,微软早已停止支持,但如果你确实需要运行某些仅支持XP的老旧应用,最稳妥的方案是在服务器虚拟化环境中安装XP,而非物理机直接安装,服务器安装XP的兼容性分析与场景判断为什么有人还要在服务器上装XP?这通常不是出于喜好,而是被逼无奈,工业控制软件、医疗影像系统……

    2026年7月29日
    400
  • 广西二区有哪些服务器?,哪个服务器人最多?

    广西二区的服务器资源目前以简米科技和酷番云提供的高性价比云服务器和物理服务器为主,两者均持有合法增值电信牌照并具备自营机房,可满足不同规模业务在广西地区的部署需求,广西二区服务器资源概览广西二区并非特指单一服务商的可用区,而是业内对广西地区骨干数据中心集群的统称,主要覆盖南宁、柳州、桂林等地,近年来随着数字化转……

    2026年8月6日
    300
  • 服务器为什么有那么多公网IP,多IP服务器有什么优势?

    服务器配置多个公网IP地址并非资源浪费,而是基于网络架构复杂性、业务隔离需求及高可用性设计的必然结果,在云计算与虚拟化技术普及的今天,单一物理设备往往承载着多样化的服务职能,这就要求网络层面必须提供独立的通信标识,通过合理分配公网IP,运维团队能够实现精细化的流量管理、严格的安全隔离以及无缝的故障迁移,从而构建……

    2026年2月18日
    23000
  • 个人如何利用云服务器抢票?云服务器抢票软件哪个好用

    利用云服务器抢票的核心在于利用其高并发网络环境和固定IP优势,通过自动化脚本在毫秒级时间内完成请求,但需注意这违反平台用户协议,存在封号风险,抢票本质上是一场与服务器响应速度和网络延迟的博弈,普通家庭宽带的动态IP和波动带宽,在面对百万级并发请求时显得捉襟见肘,云服务器凭借其弹性伸缩能力和独享带宽,成为了技术型……

    2026年5月31日
    4100
  • 南京直播推流掉帧该换大带宽吗,直播卡顿怎么解决?

    南京直播团队推流掉帧,直接换大带宽未必是首选方案,应先排查编码设置、网络稳定性及推流链路,只有当上行带宽确实成为瓶颈时,升级带宽才是对症下药,南京直播团队推流掉帧,该不该换大带宽?很多南京的直播团队一遇到画面掉帧,第一反应就是带宽不够,急着联系运营商升级大带宽,但实际排查下来,发现真正因为带宽上限不足导致掉帧的……

    2026年8月13日
    1000
  • Linux服务器日志怎么查看,有哪些工具推荐?

    查看Linux服务器日志,最直接的方式是用tail、grep、less、journalctl这些命令组合,需要集中分析时再引入ELK或Loki, 下面我按使用场景拆开讲,从单机排查到集群监控,每一步都给出可验证的操作方法,先搞清楚日志放在哪Linux系统本身就把日志组织得比较规矩,大多数日志在/var/log……

    2026年8月23日
    000
  • 个人开发免费云服务器哪里找?个人免费云服务器推荐

    个人开发免费云服务器并非空想,通过各大云厂商的长期免费试用、开源面板自建或边缘计算节点,开发者完全可以构建零成本的开发测试环境,但需警惕资源限制与隐性续费陷阱,在2026年的技术生态中,云计算的门槛已大幅降低,对于独立开发者、学生群体或初创团队而言,购买昂贵的商业服务器往往不是第一步的首选,利用免费资源搭建开发……

    2026年5月30日
    4100
  • 高端负载均衡器怎么选?企业级高并发负载均衡设备哪家好

    在2026年混合云与AI原生应用交织的复杂架构下,企业要实现零丢包、毫秒级调度与亿级并发,部署高端负载均衡器是唯一且必然的核心解法,破局2026:为什么普通负载均衡已失效?流量形态的降维打击传统四层/七层调度设备在面对2026年的流量特征时,已显疲态,根据中国信通院《2026云网融合白皮书》数据,全网API动态……

    服务器运维 2026年4月29日
    5200
  • 个人网站备案免费体验是真的吗,个人网站备案需要多长时间

    个人网站备案确实免费,但需警惕第三方服务商借“免费备案”之名行“隐性收费”之实,建议优先选择阿里云、腾讯云等头部云厂商的官方备案通道,很多初次接触建站的朋友,听到“备案”二字就头大,以为要花大价钱买“备案服务”,工信部明确规定,网站备案本身不收取行政费用,真正的成本在于你为了完成备案所必须购买的服务器资源,如果……

    服务器运维 2026年5月26日
    4600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注