Извлечение определенного символа из легенды matplotlib

#python #matplotlib

#питон #matplotlib

Вопрос:

я впервые пытаюсь отобразить некоторые данные с помощью matplotlib. Пока все идет хорошо. Мне удалось заставить свой код отображать график требуемых мне данных. Проблема, с которой я сталкиваюсь, заключается в извлечении символов 3:6 из «идентификатора датчика» для отображения в легенде. Как вы можете видеть, в настоящее время легенда переполняет область диаграммы, и я не вижу, какой датчик относится к какой линии, поэтому я хотел сделать маркировку меньше.

Я пытался sensor_id = sensor_id = sensor_id_folder.split("/")[-1]

Но это просто дает мне всю цепочку. Я, кажется, не могу придумать, как это сократить.

Изображение графика с переполненной легендой

Я также приложил свой код ниже для справки

 import of as of import pandas as pd from tkinter import * from tkinter import ttk from tkinter.filedialog import askopenfilename import glob import os from datetime import datetime, timezone, timedelta from os.path import exists import matplotlib.pyplot as plt import matplotlib.lines as mlines  #graph from PIL.ImageChops import offset  plt.style.use('dark_background') fig, ax = plt.subplots()  time_format = '%Y-%m-%d'  output_folder = "Sensor Data Ouptput Folder/"  sensor_list = glob.glob(output_folder   "*")  lines = []  for sensor_id_folder in sensor_list:  sensor_id = sensor_id = sensor_id_folder.split("/")[-1]  path = sensor_id_folder "/" "Daily Average.csv"  df = pd.read_csv(path)  print(df)  result = ax.plot([datetime.strptime(i, time_format) for i in df['date']], df['t1'], label=sensor_id)  lines.append(result[0])  ax.set(xlabel='time (s)', ylabel='temperature',  title='temperature plot')  ax = plt.gca() ax.set_ylim([df["t1"].min() - 10, df["t1"].max()   10])  # Shrink current axis's height by 10% on the bottom box = ax.get_position() ax.set_position([box.x0, box.y0   box.height * 0.1,  box.width, box.height * 0.9])  # Put a legend below current axis ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05),  fancybox=True, shadow=True, ncol=5)   plt.show()