我在python中使用2D数组数据创建图表时遇到了一些麻烦。
我有一个txt文件,其中包含如下数据:
0 2 4 6 8
-1 -2 -1 2 4
0 1 0 -1 0
1 3 5 7 6
0 1 -1 -3 2
1 -1 1 1 0
(这是缩短的,我的实际文件是100 * 10000
所以基本上是一个5x6阵列。
我希望x轴是每个数组中元素的总数,它总是固定限制为5。 Y轴需要是txt文件中的实际数据点。 总共创建了6行。
下面是油漆中快速绘制的照片: Image here (low score, cannot embed) 所以Y =数据值,X =每个单独数组的长度,行数是它们的总数。
我想使用这种风格,但是如果可能的话,使线宽为1px,因为将会有大约10,000行绘制。 http://matplotlib.org/examples/style_sheets/plot_fivethirtyeight.html
我尝试了一些代码,这就是我遇到的问题,我可以读取数据并将其存储在某种类型的数组中,但之后无法使用它来制作图形。 (顶部是我的阅读代码,底部是来自五十年代风格的示例代码。
import numpy as np
import matplotlib.pyplot as plt
with open('thisone.txt') as file:
array2d = [[int(digit) for digit in line.split()] for line in file]
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(0, 10)
with plt.style.context('fivethirtyeight'):
plt.plot(x, np.sin(x) + x + np.random.randn(50))
plt.plot(x, np.sin(x) + 0.5 * x + np.random.randn(50))
plt.plot(x, np.sin(x) + 2 * x + np.random.randn(50))
plt.show()
答案 0 :(得分:0)
读入数据后,迭代数据中的行并绘制图形行与范围(len(行))。
import numpy as np
import matplotlib.pyplot as plt
with open('thisone.txt') as file:
array2d = [[int(digit) for digit in line.split()] for line in file]
with plt.style.context('fivethirtyeight'):
for row in array2d:
plt.plot(xrange(len(row)), row)
plt.show()