如何在单个图形python

时间:2015-09-28 17:26:49

标签: python multidimensional-array graph

我有一个三维数组。

第一个维度有4个元素。 第二个维度有10个元素。 第三个维度有5个元素。

我想按如下方式绘制此数组的内容。

第一维的每个元素都有自己的图(页面上有四个图) 第二维的值对应于图的y值。 (每个图表上有10行) 第三维的值对应于图的x值(10行中的每一行具有5个x值)

我对python很新,甚至更新的图形。 我想出了如何使用数据正确加载我的数组...而我甚至都没有尝试让“一页上的四个图”方面正常工作。

现在我只想让一个图表正常工作。 这是我到目前为止所做的一切(一旦我的阵列设置完毕,我已正确加载我的数组。现在图表显示,但它是空白的,x轴包含负值。我的数据都不是负数)

for n in range(1):
  for m in range(10):
      for o in range(5):
        plt.plot(quadnumcounts[n][m][o])
        plt.xlabel("Trials")
        plt.ylabel("Frequency")
  plt.show()

任何帮助都会非常感激!

编辑。进一步澄清。假设我的数组加载如下:

myarray[0][1][0] = 22
myarray[0][1][1] = 10
myarray[0][1][2] = 15
myarray[0][1][3] = 25
myarray[0][1][4] = 13

我希望有一条线,y值为22,10,15,25,13,x值为1,2,3,4,5(因为它是0索引,我可以只有+1之前打印标签)

然后,让我说我有

myarray[0][2][0] = 10
myarray[0][2][1] = 17
myarray[0][2][2] = 9
myarray[0][2][3] = 12
myarray[0][2][4] = 3

我希望这是另一条线,遵循与第一条相同的规则。

2 个答案:

答案 0 :(得分:1)

以下是创建数据子图的示例。您尚未提供数据集,因此我使用x作为0360度的角度,y成为x的三角函数(正弦和余弦)。

代码示例:

import numpy as np
import pylab as plt

x = np.arange(0, 361)  # 0 to 360 degrees
y = []
y.append(1*np.sin(x*np.pi/180.0))
y.append(2*np.sin(x*np.pi/180.0))
y.append(1*np.cos(x*np.pi/180.0))
y.append(2*np.cos(x*np.pi/180.0))

z = [[x, y[0]], [x, y[1]], [x, y[2]], [x, y[3]]]  # 3-dimensional array


# plot graphs
for count, (x_data, y_data) in enumerate(z):
    plt.subplot(2, 2, count + 1)
    plt.plot(x_data, y_data)
    plt.xlabel('Angle')
    plt.ylabel('Amplitude')
    plt.grid(True)

plt.show()

输出:

enter image description here

<强>更新 使用您在更新中提供的样本日期,您可以按以下步骤操作:

import numpy as np
import pylab as plt

y1 = (10, 17, 9, 12, 3)
y2 = (22, 10, 15, 25, 13)
y3 = tuple(reversed(y1))  # generated for explanation
y4 = tuple(reversed(y2))  # generated for explanation
mydata = [y1, y2, y3, y4]

# plot graphs
for count, y_data in enumerate(mydata):
    x_data = range(1, len(y_data) + 1)
    print x_data
    print y_data
    plt.subplot(2, 2, count + 1)
    plt.plot(x_data, y_data, '-*')
    plt.xlabel('Trials')
    plt.ylabel('Frequency')
    plt.grid(True)

plt.show()

请注意,尺寸与您的尺寸略有不同。这里它们是mydata[0][0] == 10mydata[1][3] == 25等。输出显示如下: enter image description here

答案 1 :(得分:1)

这里是如何制作4个图,每个图中有10行。

import matplotlib.pyplot as plt
for i, fig_data in enumerate(quadnumcounts):
    # Set current figure to the i'th subplot in the 2x2 grid
    plt.subplot(2, 2, i + 1)
    # Set axis labels for current figure
    plt.xlabel('Trials')
    plt.ylabel('Frequency')
    for line_data in fig_data:
        # Plot a single line
        xs = [i + 1 for i in range(len(line_data))]
        ys = line_data
        plt.plot(xs, ys)
# Now that we have created all plots, show the result
plt.show()