目录
科研论文配图主要成分
主要包括
X
轴(
X
axis
,又称横轴)、
Y
轴(
Y
axis
,又称纵轴)、
X
轴标签(
X axis label)、
Y
轴标签(
Y
axis label
)、主刻度(
Major tick
)、次刻度(
Minor tick
)和图例(
Legend)等。
常见的插图格式
像素图
像素图(位图)是以单个像素为单位,通过对像素进行组合和排列,来显示图片格式。像素图在放大到一定程度后,会失真,变得模糊。常见的像素图格式包括 JPEG
、
PSD
、
PNG
、
TIFF
,其中,
JEPG
是一种常用的有损压缩图片格式,处理起来较容易,但像素分辨率低、清晰度差、色彩损失大。
矢量图
矢量图是使用点、直线或多边形等基于数学方程的几何图元表示的图像。矢量图的图像文件包含独
立的分离图像,可以自由、无限制地进行重新组合,其特点是放大后图像不会失真,也就是说,与分辨率无关。常见的矢量图格式包括 EPS
、
PDF
、
AI
、
SVG
,其中,
EPS
格式的图片文件小、显示质量高、色彩保真度高,印刷时的字样较为清晰,是常用的论文配图格式;AI
格式是一种可以二次修改的图片格式,也是常用的插图格式,其体积较大,包含图片各图层的所有信息。
色彩模式
RGB色彩模式
CMYK色彩模式
HEX色彩模式
色轮配色原理
色轮配色原理是一种使用色轮(色彩环)来组合颜色的方法,以实现视觉上的和谐和平衡。色轮通常包括12个主要颜色:三原色、三间色和六个次级色。
单色配色方案
单色配色方案是指将色相相同或相近的一组颜色进行组合。单色配色方案的饱和度和明暗层次明显。
例子
只改变给定颜色的明度。
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np
def plot_single_color_scheme(base_color_hex):
base_color_rgb = mcolors.hex2color(base_color_hex)
shades = np.linspace(0.1, 1, 10) # 10个不同的明度
fig, ax = plt.subplots(figsize=(10, 1))
for i, shade in enumerate(shades):
modified_color = [shade * c for c in base_color_rgb]
ax.add_patch(plt.Rectangle((i, 0), 1, 1, facecolor=modified_color))
ax.set_xlim(0, len(shades))
ax.set_ylim(0, 1)
ax.axis('off')
plt.show()
# Example usage with a base blue color
plot_single_color_scheme('#0000FF')
互补色配色方案
当只能选择两种颜色时,我们可参考互补色配色方案进行选择。色轮上间隔
180
°(相对)的两种颜色为互补色。
例子
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
def plot_complementary_color_scheme(base_color_hex):
base_color_rgb = mcolors.hex2color(base_color_hex)
complementary_color_rgb = [1 - c for c in base_color_rgb] # 计算互补色
fig, ax = plt.subplots(figsize=(2, 1))
# 绘制基本颜色
ax.add_patch(plt.Rectangle((0, 0), 1, 1, facecolor=base_color_rgb))
# 绘制互补颜色
ax.add_patch(plt.Rectangle((1, 0), 1, 1, facecolor=complementary_color_rgb))
ax.set_xlim(0, 2)
ax.set_ylim(0, 1)
ax.axis('off')
plt.show()
# Example usage with a base blue color
plot_complementary_color_scheme('#0000FF')
等距三角配色方案
等距三角配色方案是指将色轮上彼此间隔
120
°的
3
种颜色进行组合。等距三角配色方案会让配图的颜色更加丰富。
例子
import matplotlib.pyplot as plt
import colorsys
def plot_triadic_color_scheme(base_color_hex):
base_color_rgb = [int(base_color_hex[i:i+2], 16) / 255.0 for i in (1, 3, 5)]
base_color_hsv = colorsys.rgb_to_hsv(*base_color_rgb)
fig, ax = plt.subplots(figsize=(3, 1))
# 绘制基本颜色和两个等距离的颜色
for i in range(3):
hue = (base_color_hsv[0] + i / 3.0) % 1
triadic_color_rgb = colorsys.hsv_to_rgb(hue, base_color_hsv[1], base_color_hsv[2])
ax.add_patch(plt.Rectangle((i, 0), 1, 1, facecolor=triadic_color_rgb))
ax.set_xlim(0, 3)
ax.set_ylim(0, 1)
ax.axis('off')
plt.show()
# Example usage with a base blue color
plot_triadic_color_scheme('#0000FF')
四角配色方案
四角配色方案的优点是能够使配图的颜色更加丰富,缺点是使用时具有很大的挑战性,容易造成色彩杂乱,很多用户其实很难平衡自己选择的多种颜色。在科研论文配图的颜色选择过程中,我们要尽量避免使用四角配色方案。
例子
import matplotlib.pyplot as plt
import colorsys
def plot_tetradic_color_scheme(base_color_hex):
base_color_rgb = [int(base_color_hex[i:i+2], 16) / 255.0 for i in (1, 3, 5)]
base_color_hsv = colorsys.rgb_to_hsv(*base_color_rgb)
fig, ax = plt.subplots(figsize=(4, 1))
# 绘制基本颜色和三个等距离的颜色
for i in range(4):
hue = (base_color_hsv[0] + i / 4.0) % 1
tetradic_color_rgb = colorsys.hsv_to_rgb(hue, base_color_hsv[1], base_color_hsv[2])
ax.add_patch(plt.Rectangle((i, 0), 1, 1, facecolor=tetradic_color_rgb))
ax.set_xlim(0, 4)
ax.set_ylim(0, 1)
ax.axis('off')
plt.show()
# Example usage with a base blue color
plot_tetradic_color_scheme('#0000FF')
颜色主题
Matplotlib
库的颜色主题主要包括
3
种类型:单色系(
sequential
)、双色渐变色系(
diverging
)
和多色系(
qualitative
)。
单色系
单色系主题中颜色的色相基本相同,饱和度单调递增。它的主要维度是颜色亮度(
lightness
), 一般情况下,较低的数值对应较亮的颜色,较高的数值对应较暗的颜色,这是因为可视化配图往往是在白色或浅色背景上绘制的,而在深色背景中,则会出现相反的情况,即更亮的颜色用更高的数值表示。单色系主题的次要维度是色调(hue),即较暖的颜色出现在较亮的一端,较冷的颜色则会出现在较暗的一端。
例子
import matplotlib.pyplot as plt
import colorsys
def plot_monochromatic_color_scheme(base_color_hex):
base_color_rgb = [int(base_color_hex[i:i+2], 16) / 255.0 for i in (1, 3, 5)]
base_color_hsv = colorsys.rgb_to_hsv(*base_color_rgb)
fig, ax = plt.subplots(figsize=(5, 1))
# 绘制基本颜色的五个不同明度
for i in range(5):
value = 0.5 + i * 0.1 # 调整明度
monochromatic_color_rgb = colorsys.hsv_to_rgb(base_color_hsv[0], base_color_hsv[1], value)
ax.add_patch(plt.Rectangle((i, 0), 1, 1, facecolor=monochromatic_color_rgb))
ax.set_xlim(0, 5)
ax.set_ylim(0, 1)
ax.axis('off')
plt.show()
# Example usage with a base blue color
plot_monochromatic_color_scheme('#00FF00')
双色渐变色系
双色渐变色系颜色主题主要用在有一个关键中心值(
midpoint
)的数值变量中,其本质是两个连续单色系的组合,把关键的中心值作为中间点,一般使用白色表示,大于中心值的分配给中间点一侧的颜色,而小于中心值的分配给中间点另一侧的颜色。此外,我们可以通过颜色的深浅进行判断,即中心值通常被指定为浅色,距中心点越远,颜色越深。
例子
import matplotlib.pyplot as plt
def plot_bicolor_gradient_scheme(color1_hex, color2_hex):
color1_rgb = [int(color1_hex[i:i+2], 16) / 255.0 for i in (1, 3, 5)]
color2_rgb = [int(color2_hex[i:i+2], 16) / 255.0 for i in (1, 3, 5)]
white_rgb = [1, 1, 1]
fig, ax = plt.subplots(figsize=(10, 1))
# 绘制从color1到白色,再到color2的渐变
for i in range(10):
t = i / 9.0
if t < 0.5:
t *= 2 # Scale t to [0, 1]
gradient_color_rgb = [(1-t) * c1 + t * w for c1, w in zip(color1_rgb, white_rgb)]
else:
t = (t - 0.5) * 2 # Scale t to [0, 1]
gradient_color_rgb = [(1-t) * w + t * c2 for w, c2 in zip(white_rgb, color2_rgb)]
ax.add_patch(plt.Rectangle((i, 0), 1, 1, facecolor=gradient_color_rgb))
ax.set_xlim(0, 10)
ax.set_ylim(0, 1)
ax.axis('off')
plt.show()
# Example usage with blue and red colors
plot_bicolor_gradient_scheme('#0000FF', '#FF0000')
多色系
当所表示的数据为类别型数值(类别变量)时,我们可以使用多色系颜色主题。
例子
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap
def plot_multicolor_gradient(colors_hex):
# 创建自定义的颜色映射
cmap = LinearSegmentedColormap.from_list("custom_cmap", colors_hex)
# 创建渐变条
gradient = np.linspace(0, 1, 256).reshape(1, -1)
gradient = np.vstack((gradient, gradient))
# 绘制渐变条
fig, ax = plt.subplots(figsize=(8, 1))
ax.imshow(gradient, aspect="auto", cmap=cmap)
ax.set_axis_off()
plt.show()
# Example usage with a set of colors
colors = ['#FF0000', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF']
plot_multicolor_gradient(colors)
配色工具
Color Scheme Designer
主要以色环(色轮)的方式为使用者选择配色,包括单色搭配、互补色搭配、三角形搭配、矩形搭配、类似色搭配和“类似色搭配互补色”6
种色环配色方案。
工具网址:https://www.wauu.net/tools/ps/
Adobe Color
工具网址:https://color.adobe.com/create/color-wheel
ColorBrewer 2.0