import json from matplotlib import pyplot as plt with open('D:/SAIPA/注入测试/SAIPA注入结果K线/23FF/OBDAnalyst230511163325.output.json', 'r') as f: data=f.read() dict={} for item in data: keys=item['K-Line Crash 1'].split(':') value=item['value'] current_leve1=dict for key in keys[:-1]: if key not in current_leve1: current_leve1[key]={} current_leve1=current_leve1[key] current_leve1[keys[-1]]=value x = range(0, 400) plt.plot(x, value, color='BLUE') #print(value) plt.title("Y Direction") plt.xlabel("Times") plt.ylabel("ACC") plt.show() 此代码报出”Traceback (most recent call last): File "D:\Pycharm\main.py", line 816, in <module> keys=item['K-Line Crash 1'].split(':') ~~~~^^^^^^^^^^^^^^^^^^ TypeError: string indices must be integers, not 'str'故障请解决
时间: 2024-02-02 22:05:03 浏览: 144
CMOcean 颜色图:来自 https://matplotlib.org/cmocean/ 的颜色图集合-matlab开发
这段代码中出现了错误。首先,读取的文件数据是一个 JSON 格式的字符串,需要使用 `json.loads()` 方法将其转换为字典。其次,在遍历数据时,需要使用 `json.loads()` 方法返回的字典对象进行操作,而不是字符串。最后,在绘制图表时,需要将 `value` 转换为列表类型,以便进行绘图。
下面是修改后的代码:
```python
import json
from matplotlib import pyplot as plt
with open('D:/SAIPA/注入测试/SAIPA注入结果K线/23FF/OBDAnalyst230511163325.output.json', 'r') as f:
data = json.loads(f.read())
dict = {}
for item in data:
keys = item['K-Line Crash 1'].split(':')
value = item['value']
current_leve1 = dict
for key in keys[:-1]:
if key not in current_leve1:
current_leve1[key] = {}
current_leve1 = current_leve1[key]
current_leve1[keys[-1]] = value
x = range(0, 400)
value_list = list(value.values()) # 将 value 转换为列表类型
plt.plot(x, value_list, color='BLUE')
plt.title("Y Direction")
plt.xlabel("Times")
plt.ylabel("ACC")
plt.show()
```
希望这能帮到你。
阅读全文