Python使用Matplotlib绘制带有数据点标记的线图,使用EventCollection标记每条曲线各自轴上的 x 和 y 数据点的位置

使用 matplotlib.pyplot 绘制带有数据点标记的线图,同时使用 EventCollection 标记每条曲线各自轴上的 x 和 y 数据点的位置。。

Python使用Matplotlib绘制带有数据点标记的线图,使用EventCollection标记每条曲线各自轴上的 x 和 y 数据点的位置_第1张图片

  1. 设置随机种子和创建随机数据:

    np.random.seed(19680801)
    xdata = np.random.random([2, 10])
    

    设置随机种子以确保可重现性,并生成一个2x10的数组作为随机数据。

  2. 将数据分成两部分并排序:

    xdata1 = xdata[0, :]
    xdata2 = xdata[1, :]
    xdata1.sort()
    xdata2.sort()
    

    将数据分成两部分并对每一部分进行排序,以便得到清晰的曲线。

  3. 创建y数据点:

    ydata1 = xdata1 ** 2
    ydata2 = 1 - xdata2 ** 3
    

    根据x数据创建对应的y数据。

  4. 绘制数据:

    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(xdata1, ydata1, color='tab:blue')
    ax.plot(xdata2, ydata2, color='tab:orange')
    

    使用 plot 函数绘制两条曲线。

  5. 创建标记x和y数据点的事件:

    xevents1 = EventCollection(xdata1, color='tab:blue', linelength=0.05)
    xevents2 = EventCollection(xdata2, color='tab:orange', linelength=0.05)
    yevents1 = EventCollection(ydata1, color='tab:blue', linelength=0.05, orientation='vertical')
    yevents2 = EventCollection(ydata2, color='tab:orange', linelength=0.05, orientation='vertical')
    

    使用 EventCollection 创建用于标记x和y数据点的事件集合。

  6. 将事件添加到轴上:

    ax.add_collection(xevents1)
    ax.add_collection(xevents2)
    ax.add_collection(yevents1)
    ax.add_collection(yevents2)
    

    将创建的事件集合添加到轴上,以在图中显示数据点的标记。

  7. 设置坐标轴的范围和标题:

    ax.set_xlim([0, 1])
    ax.set_ylim([0, 1])
    ax.set_title('line plot with data points')
    

    设置x和y坐标轴的范围,并设置图标题。

  8. 显示图形:

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

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

# 创建随机数据
xdata = np.random.random([2, 10])

# 将数据分成两部分
xdata1 = xdata[0, :]
xdata2 = xdata[1, :]

# 对数据进行排序,以得到清晰的曲线
xdata1.sort()
xdata2.sort()

# 创建一些y数据点
ydata1 = xdata1 ** 2
ydata2 = 1 - xdata2 ** 3

# 绘制数据
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(xdata1, ydata1, color='tab:blue')
ax.plot(xdata2, ydata2, color='tab:orange')

# 创建标记x数据点的事件
xevents1 = EventCollection(xdata1, color='tab:blue', linelength=0.05)
xevents2 = EventCollection(xdata2, color='tab:orange', linelength=0.05)

# 创建标记y数据点的事件
yevents1 = EventCollection(ydata1, color='tab:blue', linelength=0.05, orientation='vertical')
yevents2 = EventCollection(ydata2, color='tab:orange', linelength=0.05, orientation='vertical')

# 将事件添加到轴上
ax.add_collection(xevents1)
ax.add_collection(xevents2)
ax.add_collection(yevents1)
ax.add_collection(yevents2)

# 设置坐标轴的范围
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])

# 设置图标题
ax.set_title('line plot with data points')

# 显示图形
plt.show()

你可能感兴趣的:(Python技巧,python,matplotlib,开发语言)