【问题标题】:Python error : Extra plot while plotting multiple data files using globPython 错误:使用 glob 绘制多个数据文件时的额外绘图
【发布时间】:2017-05-03 11:51:58
【问题描述】:

我有以下代码,我使用通配符* 绘制两个数据文件“data_1.txt”(二次函数)和“data_2.txt”(三次函数)。

import numpy as np
import matplotlib.pyplot as plt
import glob

#fig,ax = plt.subplots()

path = "data_*.txt"
for datafile in glob.glob(path):

    #data = np.loadtxt(datafile)
    data = np.genfromtxt(datafile)
    #print(data)
    #ax.plot(data)
    plt.plot(data)
    #plt.plot(data[:,0], data[:,1])  # This line works

plt.show()

但是,这会产生额外的情节(红色线)!

如果我使用plt.plot(data[:,0], data[:,1]) 而不是plt.plot(data),红线就不会再出现了。

有什么解释吗?在这种情况下genfromtxtloadtxt 之间还有什么区别吗?

【问题讨论】:

    标签: python matplotlib plot glob


    【解决方案1】:

    您看到的红线实际上是一条蓝线和一条红线相互叠加。这些是根据索引绘制的数据文件的第一列。

    为了使用 matplotlib 的 plot 函数生成线图,应该指定 x 和 y 坐标数组。一种选择确实是使用

    data = np.genfromtxt(datafile)
    plt.plot(data[:,0],data[:,1])
    

    另一种选择是解压缩数据。所以对于一个两列数据文件,

    x,y = np.genfromtxt(datafile, unpack=True)
    plt.plot(x,y)
    

    np.loadtxt 可以同时使用这两个选项。在相应的文档中,您会发现genfromtxtloadtxt 有更多的选项。这些额外的选项对于排除页眉或页脚数据或替换缺失值可能很有用。两个命令的返回类型相同。

    【讨论】:

    • 哦,谢谢。除非我指定,否则plot 不理解要针对哪个数组绘制哪个数组,我认为。 :)
    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2020-04-03
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多