需要帮助为科学数据的 matplotlib 设置 y 范围

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


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


当我使用matplotlib调用进行绘图时,与我读过的数十个示例相同,我得到了意想不到的结果。Matplotlab似乎没有给出y轴从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()

http://img3.mukewang.com/630713d900015bd304300284.jpg

HUX布斯
浏览 100回答 1
1回答

撒科打诨

一个非常“快速和肮脏”的方法如下:#!/usr/bin/env python3# -*- coding: utf-8 -*-from matplotlib import pyplot as plty_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值从最低到最高进行排序,如您所说:y_data似乎没有给出从我的y值数据项中从最小到最大的y轴如果要保留 的原始顺序,只需删除该行。y_datay_data = sorted(y_data)接下来我们应该详细说明的是, 是阴谋与 .根据文档,提供x值是可选的,我们可以提供没有任何x值的y值。执行此操作时,将使用相应 y 值的元素索引作为 x 值。这将导致值范围为 0...N-1。您可能希望有1...N,我们可以通过基于包含y值的长度列表计算非常基本的x值列表来实现。通过这样做,我们可以将两个列表传递给并得到所需的输出:plt.plot()y_datax_datay_dataplt.plot()没有明确给出 x 值的输出将非常相似,但基于 0 而不是基于 x 轴的 1。更改为 以查看差异:plt.plot(x_data, y_data)plt.plot(y_data)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python