需要帮助为matplotlib设置y范围以获取科学数据

时间:2020-03-10 21:09:22

标签: python matplotlib

我有一个简单的文本文件,其中包含科学数据,每行有一个数据项。 我想将其简单地绘制为y轴的序列项。 我称之为:list_y

在Python脚本中,我创建了一个列表,该列表是x轴的简单序列号列表。 我称之为:list_x

当我使用matplotlib调用进行绘图时,与我阅读的数十个示例相同,我得到了意外的结果。 Matplotlab似乎没有给出从我的y值数据项的最小到最大的y轴。 似乎在绘制数字对-不是我所说的“图形”。

我阅读了各种示例,并用我正在使用的确切代码观看了YouTube演示,这些示例都给出了我期望的结果。

geom_tile

Plot produced by matplotlib

非常感谢您的帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

一种非常“快速又肮脏”的方法类似于以下内容:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from matplotlib import pyplot as plt

y_data = [0.1, 0.22, 0.33, 0.5, 0.6, 0.66, 1, 0.9]
y_data = sorted(y_data)

x_data = [i+1 for i in range(len(y_data))]

plt.plot(x_data, y_data)
plt.show()

我剥离了,一个非常基本的示例不需要每个部分。因此,以后随时可以为网格,标题或标签添加任何配置。

我认为,您能够将输入文件中的数据读取并解析为称为y_data的浮点列表。另外,我假设您要按照从前到下的顺序对y值从最低到最高进行排序:

似乎没有给出我的y值数据项从最小到最大的y轴

如果要保留y_data的原始顺序,只需删除行y_data = sorted(y_data)

接下来要详细说明的是使用plt.plot()进行绘制。根据{{​​3}},提供x值是可选的,并且允许我们提供不包含任何x值的y值。这样做时,相应y值的元素索引将用作x值。这将导致值范围为0 ... N-1。您可能想要1 ... N,我们可以通过基于包含y值y_data的长度列表计算一个非常基本的x值列表来实现。这样,我们可以将列表x_datay_data传递到plt.plot()并获得所需的输出:

the docs

没有显式给出x值的输出将非常相似,但是基于x轴的基于0而不是1。将plt.plot(x_data, y_data)更改为plt.plot(y_data)以查看区别:

Plot with explicitly given x-values