循环通过numpy数组,将所有数组绘制成单个数字(matplotlib)

时间:2016-09-26 03:40:45

标签: python arrays numpy matplotlib

下面的函数每个都绘制一个numpy数组 plot1D,plot2D和plot3D分别采用分别为1,2和3列的数组

import numpy as np 
import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D


def plot1D(data):
    x=np.arange(len(data))
    plot2D(np.hstack((np.transpose(x), data)))

def plot2D(data):
    # type: (object) -> object
    #if 2d, make a scatter
    plt.plot(data[:,0], data[:,1], *args, **kwargs)

def plot3D(data):
    #if 3d, make a 3d scatter
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.plot(data[:,0], data[:,1], data[:,2], *args, **kwargs)

我希望能够输入1,2或3d数组的列表,并将列表中的所有数组绘制到一个数字上

我添加了循环元素,但我不确定如何保持图形并添加其他图...

def plot1D_list(data):
    for i in range(0, len(data)):
        x=np.arange(len(data[i]))
        plot2D(np.hstack((np.transpose(x), data[i])))

def plot2D_list(data):
    # type: (object) -> object
    #if 2d, make a scatter
    for i in range(0, len(data)):
        plt.plot(data[i][:,0], data[i][:,1], *args, **kwargs)

def plot3D_list(data):
    #if 3d, make a 3d scatter
    for i in range(0, len(data)):
        fig = plt.figure()
        ax = fig.add_subplot(111, projection='3d')
        ax.plot(data[i][:,0], data[i][:,1], data[i][:,2], *args, **kwargs)

1 个答案:

答案 0 :(得分:1)

要在同一轴上绘制多个数据集,您可以执行以下操作:

def plot2D_list(data,*args,**kwargs):
    # type: (object) -> object
    #if 2d, make a scatter
    n = len(data)
    fig,ax = plt.subplots() #create figure and axes
    for i in range(n):
        #now plot data set i
        ax.plot(data[i][:,0], data[i][:,1], *args, **kwargs)

您的其他功能可以以相同的方式进行推广。下面是一个使用上述函数的示例,其中包含5组随机生成的x-y坐标,每个坐标的长度为100(5个数据集中的每一个都显示为不同的颜色):

import numpy as np

X = np.random.randn(5,100,2)
plot2D_list(X,'o')
plt.show()

enter image description here