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

如何加载文本文件并在单个图中绘制多列

如何加载文本文件并在单个图中绘制多列

宝慕林4294392 2023-08-08 16:05:21
我有一个包含 5 列的文本文件。第 1 列是 X 轴(1,2,3,4),其余列是 y 轴。我想将它们绘制在一张图中。1 0 0 0 02 7 14 2.53381 0.06918483 6 16 2.61242 0.05078564 6 17 2.65154 0.040285我正在尝试将此代码用于单个y值。import matplotlib.pyplot as pltimport numpy as npfile_name = input("Enter the file name:")x, y = np.loadtxt(file_name, delimiter=',', unpack=True)plt.plot(x,y, label='Loaded from file!')plt.xlabel('Action')plt.ylabel('Rate')plt.title('Plot of Rate')plt.legend()plt.show()如何y提取并绘制多个值?
查看完整描述

4 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

用于*y将所有列数据(x 列之后)存储在 y 变量中。delimite=' '如果您的数据是空格分隔的,请使用。

因此,只需在加载文件时进行此更正并保留其他代码即可): x, *y = np.loadtxt(file_name, delimiter=',', unpack=True)

结果:

https://img1.sycdn.imooc.com//64d1f7620001ee4a06270465.jpg

查看完整回答
反对 回复 2023-08-08
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

  • 用于pandas.read_csv读入文件,并将第0列设置为索引

    • 根据所示示例使用sep='\\s+',但如果它不是 OP 中的内容,请使用适当的分隔符。

    • 根据示例,使用header=None,但根据文件需要进行更改。

  • 用于pandas.DataFrame.plot在 1 行中绘制数据框。

  • 此外,使用的好处pandas是现在可以轻松分析数据。尝试df.describe()获取按列的统计数据。

import pandas as pd


# read the file

df = pd.read_csv('file.txt', sep='\\s+', header=None, index_col=0)


# add column names if desired; the list must have as many values as there are columns

df.columns = ['a', 'b', 'c', 'd']


# plot the data

df.plot(figsize=(7, 4), xlabel='Action', ylabel='Rate', title='Plot of Rate')

https://img2.sycdn.imooc.com/64d1f7770001ee7104500280.jpg

数据汇总统计

df.describe()


             a       b        c        d

count  4.00000   4.000  4.00000  4.00000

mean   4.75000  11.750  1.94944  0.04006

std    3.20156   7.932  1.30055  0.02926

min    0.00000   0.000  0.00000  0.00000

25%    4.50000  10.500  1.90036  0.03021

50%    6.00000  15.000  2.57312  0.04554

75%    6.25000  16.250  2.62220  0.05539

max    7.00000  17.000  2.65154  0.06918


查看完整回答
反对 回复 2023-08-08
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

请检查片段

https://img1.sycdn.imooc.com//64d1f78d0001151d05840458.jpg

import matplotlib.pyplot as plt

import pandas as pd

import matplotlib.ticker as ticker


df = pd.read_csv('samp.txt', sep=" ", header=None)

df.columns = ["x", "y1", "y2", "y3","y4"]

print(df)


fig, ax = plt.subplots()


ax.plot(df['x'],df['y1'], label='Line1')

ax.plot(df['x'],df['y2'], label='Line2')

ax.plot(df['x'],df['y3'], label='Line3')

ax.plot(df['x'],df['y4'], label='Line4')

tick_spacing = 1

ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))

plt.xlabel('Action')

plt.ylabel('Rate')

plt.title('Plot of Rate')

plt.legend()

plt.show()


查看完整回答
反对 回复 2023-08-08
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

所以首先我将数据加载到 4 个变量中,其中一个是 x,其中三个是 y1、y2、y3,然后我只使用该方法三次以创建'plot'三个不同的图形


import matplotlib.pyplot as plt

import numpy as np


file_name = input("Enter the file name:")

data = np.loadtxt(file_name, delimiter=',', unpack=True)


x = data[0]

y1 = data[1] # the first graph

y2 = data[2] # the second graph

y3 = data[3] # the third graph

y4 = data[4] # the fourth graph


plt.plot(x,y1, label='y1')

plt.plot(x,y2, label='y2')

plt.plot(x,y3, label='y3')

plt.plot(x,y4, label='y3')

plt.xlabel('Action')

plt.ylabel('Rate')

plt.title('Plot of Rate')

plt.legend()

plt.show()

https://img1.sycdn.imooc.com//64d1f7a50001cfff03890278.jpg

查看完整回答
反对 回复 2023-08-08
  • 4 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

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