MatPlotLib:将多个y值分散到一个x值和回归线

时间:2018-03-17 15:01:53

标签: python matplotlib types

我想在matplotlib中创建一个散点图来测量算法的性能。

我的数据示例如下:

x = [1, 2, 3, 4, 5]
y1 = [1, 2, 3]    # corresponding to x = 1
y2 = [4, 5, 6]    # corresponding to x = 2
y3 = [7, 8, 9]    # corresponding to x = 3
y4 = [10, 11, 12] # corresponding to x = 4
y5 = [13, 14, 15] # corresponding to x = 5

哪种数据类型最适合用一个x值表示多个y值?

在我的例子中,关系是指数的。有没有办法在matplotlib中绘制指数回归线?

1 个答案:

答案 0 :(得分:1)

我认为这与数据分析有关。如果我理解正确,我认为您希望与每个测试的时间效率进行比较,但在每次测试运行时,它们应该处于相同的测试环境(如同一台机器,相同的输入数据等)。 )因此,只需提出建议,您可以使用每个测试的平均运行时间作为标准值来显示您的测试结果。这是您可以使用的一些代码。

import numpy as np
import matplotlib.pyplot as plt

data_dim = 4 # number of test
data_points = 100 # number of each test_data_points

data_set = np.random.rand(data_dim,data_points)
time = [ list(range(len(i))) for i in data_set]

norm = np.full((data_dim,data_points),1)
aver = [] # get each test's average value
ndx = 0
for i in norm:
    aver.append(i* sum(data_set[0]) / data_points)


fig = plt.figure(figsize=(10,10))

ndx = 1
for i in range(0,2):
    for j in range(0,2):
        ax = fig.add_subplot(2,2,ndx)
        ax.plot(time[ndx-1],data_set[ndx-1],'ko')
        ax.plot(time[ndx-1],aver[ndx-1],'r')
        ax.set_ylim(-1,2)
        ndx += 1

plt.show()

以下是运行结果。请注意,红色实线是您的测试时间的平均值,这将给出每个测试的一些感觉。 enter image description here