对json文件中的数据进行绘制
def plot_json_comparison(files:list):
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):
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
}