Add `user_config_dir('Ultralytics')`
diff --git a/utils/general.py b/utils/general.py
index f2af386a7d9..06bf088582d 100755
--- a/utils/general.py
+++ b/utils/general.py
@@ -103,6 +103,15 @@ def get_latest_run(search_dir='.'):
     return max(last_list, key=os.path.getctime) if last_list else ''
 
 
+def user_config_dir(dir='Ultralytics'):
+    # Return path of user configuration directory (make if necessary)
+    settings = {'Windows': 'AppData/Roaming', 'Linux': '.config', 'Darwin': 'Library/Application Support'}
+    path = Path.home() / settings.get(platform.system(), '') / dir
+    if not path.is_dir():
+        path.mkdir()  # make dir if required
+    return path
+
+
 def is_docker():
     # Is environment a Docker container?
     return Path('/workspace').exists()  # or Path('/.dockerenv').exists()
diff --git a/utils/plots.py b/utils/plots.py
index d8a561a71dc..1ed88ea7c83 100644
--- a/utils/plots.py
+++ b/utils/plots.py
@@ -16,16 +16,14 @@
 import torch
 from PIL import Image, ImageDraw, ImageFont
 
-from utils.general import is_ascii, xyxy2xywh, xywh2xyxy
+from utils.general import user_config_dir, is_ascii, xywh2xyxy, xyxy2xywh
 from utils.metrics import fitness
 
 # Settings
+CONFIG_DIR = user_config_dir()  # Ultralytics settings dir
 matplotlib.rc('font', **{'size': 11})
 matplotlib.use('Agg')  # for writing to files only
 
-FILE = Path(__file__).absolute()
-ROOT = FILE.parents[1]  # yolov5/ dir
-
 
 class Colors:
     # Ultralytics color palette https://ultralytics.com/
@@ -49,9 +47,9 @@ def hex2rgb(h):  # rgb order (PIL)
 
 
 def check_font(font='Arial.ttf', size=10):
-    # Return a PIL TrueType Font, downloading to ROOT dir if necessary
+    # Return a PIL TrueType Font, downloading to CONFIG_DIR if necessary
     font = Path(font)
-    font = font if font.exists() else (ROOT / font.name)
+    font = font if font.exists() else (CONFIG_DIR / font.name)
     try:
         return ImageFont.truetype(str(font) if font.exists() else font.name, size)
     except Exception as e:  # download if missing



## 🛠️ PR Summary

<sub>Made with ❤️ by [Ultralytics Actions](https://github.com/ultralytics/actions)<sub>

### 🌟 Summary
Implementation of user configuration directory for platform-specific settings and font management in YOLOv5.

### 📊 Key Changes
- Added a new `user_config_dir` function to create or return a user-specific configuration directory.
- Updated the `check_font` function to use the new user config directory for downloading missing fonts.

### 🎯 Purpose & Impact
- 🛠 **Enhances platform compatibility**: The user configuration path adapts to the operating system, improving functionality across Windows, Linux, and macOS.
- 🖌 **Improves font management**: Fonts are now managed in the user's configuration directory, making the process cleaner and less intrusive.
- 📈 **Potential user impact**: Both developers and users benefit from a neater installation with settings and resources stored in a dedicated, user-specific location, which can reduce permission issues and improve the overall user experience.