json画图函数

多个json文件数据画图

对json文件中的数据进行绘制

def plot_json_comparison(files:list):
    # 从文件读取 JSON 数据
    jsons = []
    for json_data in files:
        with open(json_data, 'r') as f:
            jsons.append(json.load(f))

    dfs = pd.DataFrame(list(jsons[0].items()), columns=['Metric', 'Value0'])
    
    for idx, data in enumerate(jsons[1:],start=1):
        # 将 JSON 对象转换为数据框
        df = pd.DataFrame(list(data.items()), columns=['Metric', f'Value_{idx}'])
        # 合并数据框以便于绘图
        if dfs is None:
            dfs = df
        else:
            dfs = pd.merge(dfs, df, on='Metric')

    # 绘制图形
    plt.figure(figsize=(12, 8))
    sns.lineplot(data=dfs.melt(id_vars='Metric', var_name='Source', value_name='Value'), x='Metric', y='Value', hue='Source', marker='o')
    plt.xticks(rotation=45, ha='right')
    plt.grid(True)
    
    plt.title('Comparison of JSON Data Sets')
    plt.tight_layout()
    plt.show()
    
    return dfs
{
    "arrow_down": 0.4517304189435337,
    "arrow_ru": 0.9672131147540983,
    "arrow_rd": 0.9854280510018215,
    "arrow_up": 0.30418943533697634,
    "arrow_r": 0.2750455373406193,
    "connected": 0.08196721311475409,
    "blue_tooth_connecting": 0.26958105646630237,
    "bind": 0.01092896174863388,
    "not_yet_bound": 0.9690346083788707,
    "device_initializing": 0.9617486338797814,
    "finish": 0.5318761384335154,
    "device_change": 0.8998178506375227,
    "no_any_data": 0.9617486338797814,
    "too_high": 0.23497267759562843,
    "too_low": 0.15664845173041894,
    "blood_glucose_level": 0.4444444444444444,
    "unknown_task": 0.6819672131147541
}
{
    "arrow_down": 0.994535519125683,
    "arrow_ru": 0.970856102003643,
    "arrow_rd": 0.9872495446265938,
    "arrow_up": 0.9836065573770492,
    "arrow_r": 0.97632058287796,
    "connected": 0.994535519125683,
    "blue_tooth_connecting": 0.9890710382513661,
    "bind": 0.9981785063752276,
    "not_yet_bound": 1.0,
    "device_initializing": 1.0,
    "finish": 1.0,
    "device_change": 0.9981785063752276,
    "no_any_data": 1.0,
    "too_high": 1.0,
    "too_low": 1.0,
    "blood_glucose_level": 0.9927140255009107,
    "unknown_task": 0.981056466302368
}

可视化结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值