Python 如何加载文本文件并在一个图形中绘制多列?

Python 如何加载文本文件并在一个图形中绘制多列?,python,numpy,matplotlib,Python,Numpy,Matplotlib,我有一个5列的文本文件。第一列是X轴(1,2,3,4),其余的列是y轴。我想把它们画在一张图上 1 0 0 0 0 2 7 14 2.53381 0.0691848 3 6 16 2.61242 0.0507856 4 6 17 2.65154 0.040285 我正在为单个y值尝试此代码 import matplotlib.pyplot as plt import numpy as np file_name = input("Enter the file name:")

我有一个5列的文本文件。第一列是X轴(1,2,3,4),其余的列是y轴。我想把它们画在一张图上

1 0 0 0 0
2 7 14 2.53381 0.0691848
3 6 16 2.61242 0.0507856
4 6 17 2.65154 0.040285
我正在为单个
y
值尝试此代码

import matplotlib.pyplot as plt
import numpy as np

file_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
值?

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

所以,只需在加载文件时进行此更正,并保持其他代码不变):
x,*y=np.loadtxt(文件名,分隔符=',',unpack=True)

其结果是:

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

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()
请检查代码片段

  • from修复了OP中的代码,但此答案表示生成所需输出的代码量最少
  • 用于读取文件,并将列0设置为索引
    • 根据显示的示例使用
      sep='\\s+'
      ,但如果不是OP中的内容,则使用适当的分隔符
    • 根据示例,使用
      header=None
      ,但根据需要对文件进行更改
  • 用于在一行中绘制数据帧
  • 此外,使用
    pandas
    的好处是现在可以轻松分析数据。请尝试
    df.descripe()
    获取按列统计信息
将熊猫作为pd导入
#读文件
df=pd.read\u csv('file.txt',sep='\\s+',header=None,index\u col=0)
#如果需要,添加列名;列表的值必须与列的数目相同
df.columns=['a','b','c','d']
#绘制数据
图(figsize=(7,4),xlabel='Action',ylabel='Rate',title='Rate'图)

  • 数据统计摘要
df.descripe()
a、b、c、d
计算4.00000 4.000 4.00000 4.00000
平均值4.75000 11.7501.94944 0.04006
标准3.20156 7.932 1.30055 0.02926
最小0.00000.000 0.00000.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
最大值7.0000017.000 2.65154 0.06918

FYI:彻底回答问题非常耗时。如果你的问题得到了解决,那就接受最符合你需要的解决方案来表示感谢。接受检查位于答案左上角的向上/向下箭头下方。如果出现更好的解决方案,则可以接受新的解决方案。如果你有15+的声誉,你也可以用向上或向下箭头对答案的质量/帮助性进行投票。如果解决方案不能回答问题,请留下评论。非常感谢。
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()