updata di example and change the location of the .ipynb locations
diff --git a/examples/di/data_visualization.py b/examples/di/data_visualization.py
index 1a21ab7cb..184e04f26 100644
--- a/examples/di/data_visualization.py
+++ b/examples/di/data_visualization.py
@@ -1,14 +1,17 @@
 import asyncio
 
+from metagpt.logs import logger
 from metagpt.roles.di.data_interpreter import DataInterpreter
+from metagpt.utils.recovery_util import save_history
 
 
 async def main(requirement: str = ""):
     di = DataInterpreter()
-    await di.run(requirement)
+    rsp = await di.run(requirement)
+    logger.info(rsp)
+    save_history(role=di)
 
 
 if __name__ == "__main__":
     requirement = "Run data analysis on sklearn Iris dataset, include a plot"
-
     asyncio.run(main(requirement))
diff --git a/metagpt/utils/recovery_util.py b/metagpt/utils/recovery_util.py
index d0b197e69..2089ae018 100644
--- a/metagpt/utils/recovery_util.py
+++ b/metagpt/utils/recovery_util.py
@@ -54,5 +54,5 @@ def save_history(role: Role, save_dir: str = ""):
     with open(save_path / "plan.json", "w", encoding="utf-8") as plan_file:
         json.dump(plan, plan_file, indent=4, ensure_ascii=False)
 
-    save_code_file(name=Path(record_time) / "history_nb", code_context=role.execute_code.nb, file_format="ipynb")
+    save_code_file(name=Path(record_time), code_context=role.execute_code.nb, file_format="ipynb")
     return save_path

**Features**
<!-- Clear and direct description of the submit features. -->
<!-- If it's a bug fix, please also paste the issue link. -->

- xx
- yy
    
**Feature Docs**
<!-- The RFC, tutorial, or use cases about the feature if it's a pretty big update. If not, there is no need to fill. -->

**Influence**
<!-- Tell me the impact of the new feature and I'll focus on it.  -->

**Result**
<!-- The screenshot/log of unittest/running result -->

**Other**
<!-- Something else about this PR. -->