Python 在同一行上打印字符串和整数的文本文件图形

Python 在同一行上打印字符串和整数的文本文件图形,python,json,python-3.x,matplotlib,Python,Json,Python 3.x,Matplotlib,我正在尝试使用以下排列方式的txt数据文件绘制图形: {"alpha": 77.6, "beta": 135, "gamma": 342, "delta": 86.3} {"alpha": 77.3, "beta": 140, "gamma": 332, "delta": 82.3} (下面的300+行具有类似的安排) 普通表应使用以下代码(这正是我想要的): 因为我想做一个代码,你可以随意改变x轴和y轴。但是,在这种情况下,它不起作用,因为每个标题和值都位于同一行 我可以知道是否有任何方

我正在尝试使用以下排列方式的txt数据文件绘制图形:

{"alpha": 77.6, "beta": 135, "gamma": 342, "delta": 86.3}

{"alpha": 77.3, "beta": 140, "gamma": 332, "delta": 82.3}

(下面的300+行具有类似的安排)

普通表应使用以下代码(这正是我想要的):

因为我想做一个代码,你可以随意改变x轴和y轴。但是,在这种情况下,它不起作用,因为每个标题和值都位于同一行


我可以知道是否有任何方法删除标题或提取数据中的整数等?谢谢

为什么不使用json包呢?显然,数据的每一行都是json格式的行

import json
    with open('data','r') as f:
        for line in f.readlines():
            print(json.loads(line).values())
如果您希望有一个dicts数组,请将最后一行改写为 打印(json.loads(行))


编辑:如果您有一个DICT数组,您可以轻松提取所需的x和y值

为什么不使用json包?显然,数据的每一行都是json格式的行

import json
    with open('data','r') as f:
        for line in f.readlines():
            print(json.loads(line).values())
如果您希望有一个dicts数组,请将最后一行改写为 打印(json.loads(行))


编辑:如果您有一个dict数组,您可以轻松提取所需的x和y值

以下代码片段应该适合您的需要

import numpy as np
import matplotlib.pyplot as plt
from json import loads

data = {}
def get_points(x, y):
    a = 'xyz/examples.txt'
    with open(a, 'r') as f:
        for line in f:
            new_dict = loads(line.strip())
            for k in new_dict:
                if k in data:
                    data[k].append(float(new_dict[k]))
                else:
                    data[k] = [float(new_dict[k])]

    array = np.array([data[x], data[y]])
    plt.plot(array[0], array[1])
    plt.show()

get_points('alpha', 'beta')


由于每行具有相同的格式,因此可以将每行转换为字典,并为每个通道附加其值。这将为您提供一个排序字典,其中键是通道,值是一个值列表(按正确的顺序)。唯一的变化是,您必须按频道名称而不是索引引用频道,因为字典是未排序的。

以下代码片段应该适用于您的目的

import numpy as np
import matplotlib.pyplot as plt
from json import loads

data = {}
def get_points(x, y):
    a = 'xyz/examples.txt'
    with open(a, 'r') as f:
        for line in f:
            new_dict = loads(line.strip())
            for k in new_dict:
                if k in data:
                    data[k].append(float(new_dict[k]))
                else:
                    data[k] = [float(new_dict[k])]

    array = np.array([data[x], data[y]])
    plt.plot(array[0], array[1])
    plt.show()

get_points('alpha', 'beta')


由于每行具有相同的格式,因此可以将每行转换为字典,并为每个通道附加其值。这将为您提供一个排序字典,其中键是通道,值是一个值列表(按正确的顺序)。唯一的变化是您必须按频道名称而不是索引引用频道,因为字典未排序。

您的x轴是什么?仅仅是行号或一个通道?例如,如果我将x设置为0,这意味着我希望alpha(77.6,77.3…)的值作为x轴。1对应于beta(135140…)的值,2对应于gamma等,根据我想要设置的(如代码所述),y值将与x轴相同。现在的问题是字符串(“alpha”、“beta”、“gamma”和“delta”)正在我绘制图形的路上……x轴是什么?仅仅是行号或一个通道?例如,如果我将x设置为0,这意味着我希望alpha(77.6,77.3…)的值作为x轴。1对应于beta(135140…)的值,2对应于gamma等,根据我想要设置的(如代码所述),y值将与x轴相同。现在的问题是字符串(“alpha”、“beta”、“gamma”和“delta”)正在我绘制图形的路上……谢谢!我在.values()中使用了您的建议,现在我得到了如下内容:dict_值([135,86.3342,77.6])等(许多行,排列顺序与文本文件不同)。我可以问一下如何使它们有序,并提取出我想要的绘制线吗?谢谢!我在.values()中使用了您的建议,现在我得到了如下内容:dict_值([135,86.3342,77.6])等(许多行,排列顺序与文本文件不同)。我可以问一下如何把它们排列整齐,并提取出我想要的线条进行绘图吗?