#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()