我有一个包含科学数据的简单文本文件,每行有一个数据项。 我想简单地将其绘制为y轴上的顺序项。 我称之为:列表y
在Python脚本中,我创建了一个列表,它是x轴的简单序列号列表。 我称之为:列表x
当我使用matplotlib调用进行绘图时,与我读过的几十个示例一样,我得到了意想不到的结果。 Matplotlab似乎没有给出y轴从最小到最大的y值数据项。 它似乎绘制了数字对,而不是我所说的“图形”
我已经阅读了各种各样的例子,并观看了Youtube的演示,这些例子都给出了我所期望的结果
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 10 12:18:57 2020
@author: usera
"""
from matplotlib import pyplot as plt
# data in data01a.txt is: 0.1 0.22 0.33 0.5 0.6 0.66 1 .9
data_han = open('data01a.txt', 'r')
list_y = data_han.readlines()
data_han.close()
y_size = len(list_y)
ii = 0
list_x = []
#follow while stmt creates a numeric list for x-axis
while ii < y_size:
list_x.append(ii)
ii += 1
plt.xlabel('Sequence')
plt.ylabel('Value')
plt.legend()
plt.grid('True')
#following 3 lines of code commented out
#since it causes strange results
#axes = plt.gca()
#axes.set_xlim(0,10)
#axes.set_ylim(0,1)
#following commented out code does not give correct x axis
#and no line is plotted at all
#plt.axis(0,10,0,1)
#following commented out code does not give correct y axis
#plt.xlim(0,10)
#plt.ylim(0,1)
plt.plot(list_x, list_y, label='Test Plot')
plt.savefig('test01a.png')
plt.show()
非常感谢您的帮助
多谢各位
非常“快速且肮脏”的方法如下所示:
我剥去了,一个非常基本的例子不需要的每个部分。因此,以后可以随意添加网格、标题或标签的任何配置
我假设,您能够将输入文件中的数据读取并解析到名为
y_data
的浮点列表中。此外,我假设您希望将y值从最低到最高排序,如您所述:如果要保持
y_data
的原始顺序,只需删除y_data = sorted(y_data)
行即可接下来我们要详细说明的是用
plt.plot()
进行绘图。根据the docs,提供x值是可选的,我们可以提供y值而不提供任何x值。执行此操作时,相应y值的元素索引将用作x值。这将导致值范围为0…N-1。您可能想要得到1…N,我们可以通过基于包含y值的长度列表y_data
计算一个非常基本的x值列表来实现。通过这样做,我们可以将两个列表x_data
和y_data
传递给plt.plot()
,并获得所需的输出:没有明确给定x值的输出将非常相似,但基于x轴的输出是基于0而不是基于1。将
plt.plot(x_data, y_data)
更改为plt.plot(y_data)
以查看差异:相关问题 更多 >
编程相关推荐