Python中绘图主要依赖于各种库,其中matplotlib
是最常用且功能强大的一个。在matplotlib
中,你可以使用各种颜色来表示不同的数据点、线条或填充区域。下面我将详细介绍如何在Python中使用matplotlib
来设置绘图颜色,并给出具体的例子。
14.1颜色的表示方式
- 颜色名称:直接使用英文颜色名称,如
red
、blue
、green
、yellow
等。 - 十六进制颜色代码:以
#
开头,后面跟着6个十六进制数字,表示RGB颜色。例如,#FF0000
表示红色。 - RGB元组:一个包含三个介于0到1之间浮点数的元组,分别代表红色、绿色和蓝色的强度。例如,
(1.0, 0.0, 0.0)
表示红色。 - RGBA元组:与RGB元组类似,但多了一个表示透明度的值(Alpha),范围也是0到1。例如,
(1.0, 0.0, 0.0, 0.5)
表示半透明的红色。
14.2举例说明
14.2.1图像呈现
14.2.2代码
import numpy as np # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams # 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
rcParams.update(config) # 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False # 运行配置参数总的轴(axes)正常显示正负号(minus)
# 创建一些数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建一个新的图形和坐标轴
fig, ax = plt.subplots()
# 使用颜色名称绘制第一条线
ax.plot(x, y1, color='red', label='sin(x)')
# 使用十六进制颜色代码绘制第二条线
ax.plot(x, y2, color='#00FF00', label='cos(x)')
# 使用RGB元组绘制第三条线(这里还是红色)
ax.plot(x, y1 + 0.5, color=(1.0, 0.0, 0.0), linestyle='--', label='sin(x) + 0.5')
# 使用RGBA元组绘制第四条线(半透明的蓝色)
ax.plot(x, y2 - 0.5, color=(0.0, 0.0, 1.0, 0.5), linestyle='-.', label='cos(x) - 0.5')
# 添加图例
ax.legend()
# 显示图形
plt.show()
14.3直接颜色
定义:直接颜色通常指的是通过颜色的名称来指定颜色,如“red”、“blue”、“green”等。
14.3.1绘图颜色罗列
以下是按照中文-英文的顺序罗列的所有英文颜色名称:
- 爱丽丝蓝 - aliceblue
- 古董白 - antiquewhite
- 水绿色 - aqua
- 绿松石色 - aquamarine
- 天蓝色 - azure
- 米色 - beige
- 桔黄色 - bisque
- 黑色 - black
- 漂白杏色 - blanchedalmond
- 蓝色 - blue
- 蓝紫色 - blueviolet
- 棕色 - brown
- 栗色 - burlywood
- 军蓝色 - cadetblue
- 黄绿色 - chartreuse
- 巧克力色 - chocolate
- 珊瑚色 - coral
- 矢车菊蓝 - cornflowerblue
- 米绸色 - cornsilk
- 深红色 - crimson
- 青色 - cyan
- 深蓝色 - darkblue
- 深青色 - darkcyan
- 深金黄色 - darkgoldenrod
- 深灰色 - darkgray
- 深绿色 - darkgreen
- 深灰色(同darkgray) - darkgrey
- 深卡其色 - darkkhaki
- 深洋红色 - darkmagenta
- 深橄榄绿 - darkolivegreen
- 深桔黄色 - darkorange
- 深兰花色 - darkorchid
- 深红色 - darkred
- 深肉色 - darksalmon
- 深海绿色 - darkseagreen
- 深石板蓝色 - darkslateblue
- 深石板灰色 - darkslategray
- 深石板灰色(同darkslategray) - darkslategrey
- 深青绿色 - darkturquoise
- 深紫色 - darkviolet
- 深粉红色 - deeppink
- 深天蓝色 - deepskyblue
- 暗灰色 - dimgray
- 暗灰色(同dimgray) - dimgrey
- 道奇蓝 - dodgerblue
- 砖红色 - firebrick
- 花白色 - floralwhite
- 森林绿 - forestgreen
- 紫红色 - fuchsia
- 淡黄色 - gainsboro
- 幽灵白 - ghostwhite
- 金色 - gold
- 金黄色 - goldenrod
- 灰色 - gray
- 灰色(同gray) - grey
- 绿色 - green
- 黄绿色 - greenyellow
- 蜜色 - honeydew
- 热粉红色 - hotpink
- 印度红 - indianred
- 靛青色 - indigo
- 象牙色 - ivory
- 卡其色 - khaki
- 淡紫色 - lavender
- 淡紫红 - lavenderblush
- 草绿色 - lawngreen
- 柠檬绸色 - lemonchiffon
- 淡蓝色 - lightblue
- 淡珊瑚色 - lightcoral
- 淡青色 - lightcyan
- 浅金黄色 - lightgoldenrodyellow
- 淡灰色 - lightgray
- 淡绿色 - lightgreen
- 淡灰色(同lightgray) - lightgrey
- 淡粉红色 - lightpink
- 淡肉色 - lightsalmon
- 淡海绿色 - lightseagreen
- 淡天蓝色 - lightskyblue
- 淡石板灰色 - lightslategray
- 淡石板灰色(同lightslategray) - lightslategrey
- 淡钢蓝色 - lightsteelblue
- 淡黄色 - lightyellow
- 酸橙色 - lime
- 酸橙绿色 - limegreen
- 亚麻色 - linen
- 洋红色 - magenta
- 栗色 - maroon
- 中等宝石绿 - mediumaquamarine
- 中等蓝色 - mediumblue
- 中兰花色 - mediumorchid
- 中紫色 - mediumpurple
- 中海绿色 - mediumseagreen
- 中暗蓝色 - mediumslateblue
- 春绿色 - mediumspringgreen
- 中青绿色 - mediumturquoise
- 中紫罗兰红色 - mediumvioletred
- 午夜蓝 - midnightblue
- 薄荷奶油色 - mintcream
14.3.2颜色对比
14.3.2.1图像呈现
14.3.2.2代码
import numpy as np # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams # 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
rcParams.update(config) # 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False # 运行配置参数总的轴(axes)正常显示正负号(minus)
# 选择一部分颜色名称进行对比
colors = ['red', 'green', 'blue', 'yellow', 'cyan', 'magenta', 'black', 'white']
# 创建数据
N = len(colors)
ind = np.arange(N) # 条形图的x位置
width = 0.35 # 条形图的宽度
# 创建条形图
fig, ax = plt.subplots()
rects1 = ax.bar(ind, [1] * N, width, color=colors)
# 添加一些文本,用于解释每个条形图
ax.set_ylabel('Value')
ax.set_title('色彩对比')
ax.set_xticks(ind)
ax.set_xticklabels(colors)
# 自动调整x轴标签的位置
ax.set_xticklabels(colors, rotation=45)
# 显示图形
plt.show()
14.4十六进制颜色代码
定义:十六进制颜色代码是一种使用十六进制数表示颜色的方式,通常以#RRGGBB
(不带透明度)或#RRGGBBAA
(带透明度)的形式出现,其中RR、GG、BB分别代表红色、绿色和蓝色的强度,AA代表透明度。
14.4.1常见颜色代码
- 白色 -
#FFFFFF
- 黑色 -
#000000
- 红色 -
#FF0000
- 绿色 -
#00FF00
- 蓝色 -
#0000FF
- 黄色 -
#FFFF00
- 紫色 -
#800080
- 灰色 -
#808080
- 银色 -
#C0C0C0
- 粉红色 -
#FFC0CB
- 橙色 -
#FFA500
- 棕色 -
#A52A2A
- 深蓝色 -
#00008B
- 天蓝色 -
#ADD8E6
- 青色 -
#00FFFF
- 海蓝色 -
#4682B4
- 橄榄色 -
#808000
- 桃红色 -
#FFB6C1
- 金色 -
#FFD700
- 巧克力色 -
#C15500
14.4.2 图像呈现
14.4.3绘图代码
import numpy as np # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams # 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
rcParams.update(config) # 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False # 运行配置参数总的轴(axes)正常显示正负号(minus)
import matplotlib.pyplot as plt
import numpy as np
# 创建一些示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 使用十六进制颜色代码绘制线
plt.plot(x, y, color='#FF0000') # 红色线
# 使用另一个十六进制颜色代码绘制散点
plt.scatter(x[::10], y[::10], color='#00FF00') # 绿色散点
# 设置图表标题和坐标轴标签
plt.title('使用十六进制颜色代码绘图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
# 显示图表
plt.show()
使用十六进制颜色代码的好处是它们提供了一种直观且精确的方式来指定颜色,特别是当你需要使用特定的品牌颜色或设计颜色时。
14.5RGB元组
定义:RGB元组是一种使用三个整数(范围通常为0-255)分别表示红色、绿色和蓝色通道强度的颜色表示方式。这三个值可以任意组合,形成各种不同的颜色。通过调整RGB元组中的值,你可以得到几乎无限多种颜色。每个颜色都可以通过调整红、绿、蓝三种颜色的强度来精确控制。在某些绘图库(如Matplotlib)中,也可能使用0-1范围内的浮点数表示。
14.5.1常见颜色
- 红色:
(255, 0, 0)
- 绿色:
(0, 255, 0)
- 蓝色:
(0, 0, 255)
- 黑色:
(0, 0, 0)
- 白色:
(255, 255, 255)
- 黄色:
(255, 255, 0)
- 青色:
(0, 255, 255)
- 紫色:
(128, 0, 128)
- 灰色(50%):
(128, 128, 128)
- 棕色:
(165, 42, 42)
- 粉红色:
(255, 192, 203)
- 橙色:
(255, 165, 0)
14.5.2图像呈现
14.5.3绘图代码
import numpy as np # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams # 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
rcParams.update(config) # 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False # 运行配置参数总的轴(axes)正常显示正负号(minus)
# 创建一些示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 使用RGB元组绘制线(值范围必须在0到1之间)
plt.plot(x, y, color=(1, 0, 0)) # 红色线,RGB值转换为0-1范围
# 使用另一个RGB元组绘制散点(值范围必须在0到1之间)
plt.scatter(x[::10], y[::10], color=(0, 1, 0)) # 绿色散点,RGB值转换为0-1范围
# 设置图表标题和坐标轴标签
plt.title('使用RGB元组绘图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
# 显示图表
plt.show()
14.6RGBA元组
定义:RGBA元组是RGB元组的扩展,增加了一个表示透明度的通道(A)。由四个整数值组成,分别代表红色、绿色、蓝色和透明度(Alpha)的强度。这三个颜色通道(RGB)的值范围通常是0到255,而透明度通道(A)的值范围通常是0(完全透明)到1(完全不透明)或者0到255。
14.6.1常见颜色
# 红色,完全不透明
rgba_255_red = (255, 0, 0, 255)
# 绿色,50%透明
rgba_255_green_half_transparent = (0, 255, 0, 128)
# 蓝色,完全透明
rgba_255_blue_transparent = (0, 0, 255, 0)
14.6.2图像呈现
14.6.3绘图代码
import numpy as np # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams # 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
rcParams.update(config) # 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False # 运行配置参数总的轴(axes)正常显示正负号(minus)
# 创建一些示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 定义两个带有透明度的RGBA元组
# 注意:Matplotlib中,RGBA元组的Alpha值应该是0到1之间
color1 = (0.1, 0.2, 0.5, 0.7) # 蓝色调,70%不透明
color2 = (0.9, 0.5, 0.1, 0.3) # 橙色调,30%不透明
# 绘制带有透明度的线
plt.plot(x, y1, color=color1, label='Sin(x) with alpha=0.7')
plt.plot(x, y2, color=color2, label='Cos(x) with alpha=0.3')
# 设置图例
plt.legend()
# 设置图表标题和坐标轴标签
plt.title('使用RGBA元组进行科研绘图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
# 显示网格
plt.grid(True)
# 显示图表
plt.show()
14.7绘图对比
- 直接颜色:
- 优点:易于理解和使用,无需进行任何转换。
- 缺点:颜色名称的集合有限,可能无法精确匹配所需的颜色。此外,不同的绘图库或软件可能对相同的颜色名称有不同的解释,导致颜色不一致。
- 适用场景:在需要快速设置大致颜色且对颜色精度要求不高的情况下使用。
- 十六进制颜色代码:
- 优点:能够精确地表示颜色,且在不同平台和软件中的解释较为一致。此外,十六进制颜色代码在网页设计和图形编辑中广泛使用,便于与其他设计元素匹配。
- 缺点:相对于RGB或RGBA元组,十六进制颜色代码可能需要一些额外的转换工作。
- 适用场景:在需要精确匹配颜色且与其他设计元素协调时使用,尤其在网页或图形编辑领域。
- RGB元组:
- 优点:能够精确地表示颜色,且在数值计算和处理方面较为方便。此外,RGB元组在许多编程语言和图形库中都有很好的支持。
- 缺点:与十六进制颜色代码相比,RGB元组可能不太直观,需要一定的转换工作。此外,在某些情况下,可能需要额外处理以匹配绘图库或软件的颜色范围要求。
- 适用场景:在编程和数值计算中需要精确控制颜色时使用,尤其在需要与其他颜色空间(如HSV、CMYK等)进行转换时。
- RGBA元组:
- 优点:能够精确地表示颜色及其透明度,使得绘图更加灵活和多样。通过调整透明度,可以实现叠加、渐变等效果,增强图形的表现力。
- 缺点:与RGB元组相比,RGBA元组需要额外的处理来管理透明度通道。此外,在某些不支持透明度的绘图库或软件中,可能需要额外的转换或调整。
- 适用场景:在需要表示颜色及其透明度时使用,尤其在需要实现叠加、渐变或透明效果时。