Python科研绘图--Task01

目录

科研论文配图主要成分

常见的插图格式

像素图

矢量图

色彩模式

RGB色彩模式

CMYK色彩模式

 HEX色彩模式

色轮配色原理

单色配色方案

例子

互补色配色方案 

例子

等距三角配色方案

例子

四角配色方案

例子

 颜色主题

单色系

例子

 双色渐变色系

例子

多色系

例子

配色工具

Color Scheme Designer

Adobe Color

ColorBrewer 2.0


科研论文配图主要成分

主要包括 X 轴( X axis ,又称横轴)、 Y 轴( Y axis ,又称纵轴)、 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

工具网址:ColorBrewer: Color Advice for Maps 

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值