现有一个文件夹,读取文件下的所有json文件,画json文件中对应的字段名的折线图,在图中有一个控件,用户可以选择显示那一条折线图,画一个线重新给一个选择的控件,完整代码
时间: 2024-01-26 17:03:53 浏览: 28
以下是Python代码实现:
```python
import os
import json
import matplotlib.pyplot as plt
# 存储所有JSON文件中的数据
data = {}
# 读取JSON文件
def read_json_files(path):
for filename in os.listdir(path):
if filename.endswith('.json'):
with open(os.path.join(path, filename), 'r') as f:
json_data = json.load(f)
for key in json_data.keys():
if key not in data:
data[key] = []
data[key].append(json_data[key])
# 绘制折线图
def draw_line_chart():
x = range(1, len(data[list(data.keys())[0]]) + 1)
for key in data.keys():
plt.plot(x, data[key], label=key)
plt.legend()
plt.show()
# 选择要显示的折线图
def select_line_chart():
print('请选择要显示的折线图:')
for index, key in enumerate(data.keys()):
print(f'{index + 1}. {key}')
selected_index = int(input()) - 1
selected_key = list(data.keys())[selected_index]
plt.clf()
plt.plot(range(1, len(data[selected_key]) + 1), data[selected_key])
plt.title(selected_key)
plt.show()
# 主函数
if __name__ == '__main__':
path = 'json_files' # JSON文件夹路径
read_json_files(path)
draw_line_chart()
while True:
select_line_chart()
```
该代码首先读取指定文件夹下的所有JSON文件并将它们的数据存储在`data`字典中,然后绘制了所有字段名的折线图。接下来,它进入一个循环,用户可以选择要显示的折线图。当用户选择某个折线图时,代码将清除当前图形并重新绘制所选折线图的图形。
注意,这里只给出了基本代码,可能需要根据具体的需求进行更改和完善。