Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menukar legenda kepada Matplotlib TKinter

Bagaimana untuk menukar legenda kepada Matplotlib TKinter

WBOY
WBOYke hadapan
2024-02-22 14:10:03585semak imbas

如何将图例Matplotlib TKinter

Kandungan soalan

Saya cuba mencipta legenda dalam graf tetapi ia tidak berfungsi apabila saya menggunakan legend(). Saya tidak tahu apa lagi. Saya telah melihat banyak maklumat mengenainya dan saya melakukan perkara yang sama tetapi ia tidak berjaya. Boleh kamu bantu saya?

Di bawah kod saya:

import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib import animation
import random

# Create the Tkinter window
root = tk.Tk()
root.geometry('400x100')


fig2, avail = plt.subplots(figsize=(10,7), dpi=60, facecolor= '#e9eef0',)
avail.tick_params(axis='y', labelsize=0)#Formatar a fonte yLabel
avail.set_ylabel('FOLLOWING THE PRODUCTION', fontsize=20)
avail.set_xlabel('TIME (minute)', fontsize=20)
avail.legend(['ON','PLANNED','STOP'])
   
    
stop = [30]
on = [40]
planned = [70]  
x = 1
w = 0.2


avail.barh(x + w, on ,w, color='#22e3e3', edgecolor = 'black', linewidth = 2)
avail.barh(x, planned , w ,color='#05337d', edgecolor = 'black', linewidth = 2)
avail.barh(x - w, stop, w, color = '#c95924', edgecolor = 'black', linewidth = 2)


#criando figura para plotar dentro do TKinter
canvas_avail = FigureCanvasTkAgg(fig2, master=root)
canvas_avail.get_tk_widget().place(x= 280, y= 150)

root.mainloop()

Jawapan betul


Selepas membuat beberapa perubahan dan menunjukkan ralat, berikut ialah kod lain dan kali ini ia berfungsi dan menunjukkan legenda:

import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

root = tk.Tk()
root.geometry('600x450')

fig2, avail = plt.subplots(figsize=(10,7), dpi=60, facecolor='#e9eef0',)
avail.tick_params(axis='y', labelsize=0)
avail.set_ylabel('FOLLOWING THE PRODUCTION', fontsize=20)
avail.set_xlabel('TIME (minute)', fontsize=20)

stop = [30]
on = [40]
planned = [70]
x = 1
w = 0.2

avail.barh(x + w, on, w, color='#22e3e3', edgecolor='black', linewidth=2)
avail.barh(x, planned, w, color='#05337d', edgecolor='black', linewidth=2)
avail.barh(x - w, stop, w, color='#c95924', edgecolor='black', linewidth=2)

# Legend added after creating bars
avail.legend(['ON', 'PLANNED', 'STOP'])

#criando figura para plotar dentro do TKinter
canvas_avail = FigureCanvasTkAgg(fig2, master=root)
canvas_avail.get_tk_widget().place(x=10, y=0)

root.mainloop()

Bukti:

Atas ialah kandungan terperinci Bagaimana untuk menukar legenda kepada Matplotlib TKinter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam