为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2022-08-25 14:16:28
我有一个简单的文本文件,其中包含科学数据,每行上有一个数据项。我想简单地将其绘制为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 = 0list_x = []#follow while stmt creates a numeric list for x-axiswhile ii < y_size:    list_x.append(ii)    ii += 1plt.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()
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

一个非常“快速和肮脏”的方法如下:


#!/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值从最低到最高进行排序,如您所说: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()

//img1.sycdn.imooc.com//630713e90001d38c06350471.jpg

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


//img1.sycdn.imooc.com//630713f100013eab06100444.jpg

查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信