根据文件中的数字绘制文件中的数字

时间:2018-12-28 15:51:45

标签: python matplotlib

我正在根据它们在文件中的位置绘制一组数字。

例如,文件的前几行如下所示:

93
90
77
79
83
96
111
115
115
118
129
138
153
147
151
164
166
162
161
157
165
148
161
161
143

现在,我想针对文件中的行号绘制每个数字。

X axis - line number in the file
Y axis - the value of the number at that specific line

我编写了以下代码,用于绘制文件中前5000个数字的图形:

import matplotlib.pyplot as plt
import sys

X, Y = [], []
counter = 1

for line in open(sys.argv[1], 'r'):
  X.append(float(counter))
  Y.append(float(line))
  counter = counter + 1
  if counter > 5000:
    break

plt.plot(X, Y)
plt.show()

图形如下所示:

enter image description here

但是,我希望X轴显示更详细的时间间隔,并且该图应如下图所示:

enter image description here

2 个答案:

答案 0 :(得分:1)

说明

您几乎完全正确,只需更改要使用的图形的类型即可。

代码

<ul class="jSC57">
  <div class="PZuss">
    <li>
      <div>
        <p>test1</p>
      </div>
      <div>
        <button class="_0mzm- sqdOP  L3NKy   _8A5w5" type="button">Demandé</button>
      </div>
    </li>
    <li>
      <div>
        <p>test2</p>
      </div>
      <div>
        <button class="_0mzm- sqdOP  L3NKy   _8A5w5" type="button">Demandé</button>
      </div>
    </li>
    <li>
      <div>
        <p>test3</p>
      </div>
      <div>
      </div>
    </li>
    <li>
      <div>
        <p>test4</p>
      </div>
      <div>
        <button class="_0mzm- sqdOP  L3NKy   _8A5w5" type="button">Demandé</button>
      </div>
    </li>
  </div>
</ul>

根据所需条的厚度更改宽度。

资源

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html http://www.scipy-lectures.org/intro/matplotlib/matplotlib.html

答案 1 :(得分:0)

您的问题是您正在使用plot(将数组绘制为连续线),而matplotlib具有其他功能,例如matplotlib.pyplot.vlines,可以生成您所请求的图像。

如果文件中没有空行,则此功能使您不必在示例中添加 X 列表(这可以加快程序速度)。

否则,如果该行为空,则可以在 Y 列表中添加零, 这是vlines docs

我认为无需重写程序,因为它现在很简单。