Python 带matplotlib的多线图

Python 带matplotlib的多线图,python,matplotlib,graph,Python,Matplotlib,Graph,让我们假设: A=[[1,4,2],[2,3,5],[2,4,5]…(此列表中有φ列表) B=[date1,date2,date3,…](日期) 基本上,A[I]对应于B[I]中的日期,A的内部有一个列表,其中列出了该日期B[I]的product1、product2、product3的价格 我想做一个以日期为X轴,以价格为Y轴的多线图。因此,每个日期将有3个点(产品价格1,产品价格2,产品价格3) 还有一个问题,在A的一些列表中,“内部”列表不包含3种产品,只有2种。因为另一个没有注册 例如:A

让我们假设:

A=[[1,4,2],[2,3,5],[2,4,5]…
(此列表中有φ列表)

B=[date1,date2,date3,…]
(日期)

基本上,
A[I]
对应于
B[I]
中的日期,
A
的内部有一个列表,其中列出了该日期
B[I]
product1、product2、product3
的价格

我想做一个以日期为X轴,以价格为Y轴的多线图。因此,每个日期将有3个点(产品价格1,产品价格2,产品价格3)

还有一个问题,在
A
的一些列表中,“内部”列表不包含3种产品,只有2种。因为另一个没有注册

例如:
A=[[1,4,2],[2,7],[2,4,5]]


我该怎么做多线图呢?

让我开始指出,这不是存储数据的好方法。 如果其中一个价格没有登记,就不可能知道是哪一个,这就使得整个条目无法使用。最好使用像
None
这样的占位符来记住未测量的值。例如:

[5, 6, None] --> The entry for the third product is missing
[5, None, 5] --> The entry for the second product is missing
[None, 3, 5] --> The entry for the first product is missing
这就是说,我将分享一个方法,该方法假定它始终是丢失的最后一个产品。通过使用占位符重新记录您的数据,它将为您提供正确的结果

import matplotlib.pyplot as plt
import numpy as np

total_dates = 10

# create dummy list
A = []
for a in range(total_dates):
    A.append([np.random.randint(10) for a in range(np.random.randint(2,4))])

# create dummy dates with same length
B = range(total_dates)

# make all inside lists the same length
for sublist in A:
    while len(sublist) < 3:
        sublist += [None]

# plot as lineplot
for prices in list(zip(*A)):
    plt.plot(B, A)

plt.show()
导入matplotlib.pyplot作为plt
将numpy作为np导入
总日期=10天
#创建虚拟列表
A=[]
对于范围内的日期(总日期):
A.append([np.random.randint(10)表示范围内的(np.random.randint(2,4)))
#创建具有相同长度的虚拟日期
B=范围(总日期)
#使所有内部列表长度相同
对于A中的子列表:
而len(子列表)<3:
子列表+=[无]
#以线图的形式打印
对于清单(zip(*A))中的价格:
地块(B、A)
plt.show()

当只有两种价格时,丢失的总是同一种产品吗?哪种价格没有登记?是产品1、产品2还是产品3?你怎么知道呢?不一定,每个内部列表都可能缺少一个产品。但它往往是完整的