Python使用Matplotlib绘制多个事件图 以水平和垂直方向显示事件序列

使用 matplotlib.pyplot 绘制四个事件图。事件图是一种显示多组事件的方式,每组事件都用一条线表示。显示eventplot具有各种线路属性的事件序列。以水平和垂直方向显示。

在这里插入图片描述

  1. 设置字体大小和随机种子:

    matplotlib.rcParams['font.size'] = 8.0
    np.random.seed(19680801)
    

    设置字体大小和随机种子以确保可重现性。

  2. 创建随机数据和设置颜色、线性属性:

    data1 = np.random.random([6, 50])
    colors1 = [f'C{i}' for i in range(6)]
    lineoffsets1 = [-15, -3, 1, 1.5, 6, 10]
    linelengths1 = [5, 2, 1, 1, 3, 1.5]
    

    创建一个6x50的数组作为随机数据,并设置每组位置的颜色、线性偏移和长度。

  3. 创建包含2x2子图的画布:

    fig, axs = plt.subplots(2, 2)
    

    创建一个包含2x2子图的画布。

  4. 创建水平和垂直事件图:

    axs[0, 0].eventplot(data1, colors=colors1, lineoffsets=lineoffsets1,
                        linelengths=linelengths1)
    axs[1, 0].eventplot(data1, colors=colors1, lineoffsets=lineoffsets1,
                        linelengths=linelengths1, orientation='vertical')
    

    在第一行的第一个子图中创建水平事件图,第二行的第一个子图中创建垂直事件图。

  5. 创建另一组随机数据和水平/垂直事件图:

    data2 = np.random.gamma(4, size=[60, 50])
    colors2 = 'black'
    lineoffsets2 = 1
    linelengths2 = 1
    axs[0, 1].eventplot(data2, colors=colors2, lineoffsets=lineoffsets2,
                        linelengths=linelengths2)
    axs[1, 1].eventplot(data2, colors=colors2, lineoffsets=lineoffsets2,
                        linelengths=linelengths2, orientation='vertical')
    

    创建一个新的随机数据集,并在第一行的第二个子图中创建水平事件图,第二行的第二个子图中创建垂直事件图。

  6. 显示图形:

    plt.show()
    
  • 完整代码
import matplotlib.pyplot as plt
import numpy as np

import matplotlib

# 设置字体大小
matplotlib.rcParams['font.size'] = 8.0

# 设置随机种子以便重现性
np.random.seed(19680801)

# 创建随机数据
data1 = np.random.random([6, 50])

# 为每组位置设置不同的颜色
colors1 = [f'C{i}' for i in range(6)]

# 为每组位置设置不同的线性属性
lineoffsets1 = [-15, -3, 1, 1.5, 6, 10]
linelengths1 = [5, 2, 1, 1, 3, 1.5]

# 创建一个包含2x2子图的画布
fig, axs = plt.subplots(2, 2)

# 创建水平事件图
axs[0, 0].eventplot(data1, colors=colors1, lineoffsets=lineoffsets1,
                    linelengths=linelengths1)

# 创建垂直事件图
axs[1, 0].eventplot(data1, colors=colors1, lineoffsets=lineoffsets1,
                    linelengths=linelengths1, orientation='vertical')

# 创建另一组随机数据,这次使用伽马分布仅为了美观
data2 = np.random.gamma(4, size=[60, 50])

# 使用单独的值设置参数,这些值将用于所有数据集
colors2 = 'black'
lineoffsets2 = 1
linelengths2 = 1

# 创建水平事件图
axs[0, 1].eventplot(data2, colors=colors2, lineoffsets=lineoffsets2,
                    linelengths=linelengths2)

# 创建垂直事件图
axs[1, 1].eventplot(data2, colors=colors2, lineoffsets=lineoffsets2,
                    linelengths=linelengths2, orientation='vertical')

# 显示图形
plt.show()