es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema al cambiar el tamaño del gráfico en el lienzo de la figura de tkinter.

Python 3.9 en Mac ejecutando OS 11.6.1. Mi aplicación consiste en colocar una gráfica en un marco dentro de mi ventana principal, pero estoy teniendo problemas para hacer que la gráfica ocupe una porción más grande de la ventana. Pensé que rcParams en matplotlib.pyplot se encargaría de esto, pero debo estar pasando algo por alto.

Aquí está lo que tengo hasta ahora:

import numpy as np
from tkinter import Tk, Frame, TOP, BOTH

import matplotlib
from matplotlib import pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

plt.rcParams["figure.figsize"] = [18,10]

root=Tk()
root.wm_title("Ventana Principal")
root.geometry('1500x1000')

x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)
fig, ax = plt.subplots()
ax.plot(x, y)

canvas_frame=Frame(root) # también intenté ajustar el tamaño del marco pero eso no ayudó
canvas_frame.pack(side=TOP, expand=True)
canvas = FigureCanvasTkAgg(fig, master=canvas_frame)
canvas.draw()
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=True)

root.mainloop()

Para mi aplicación real, necesito que canvas tenga un marco como padre y no simplemente root, por eso se introduce canvas_frame arriba.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puedes intentar ajustar el relleno del gráfico utilizando el método subplots_adjust en matplotlib.pyplot. Por ejemplo, puedes agregar la siguiente línea de código después de definir tu gráfico:

    plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)
    

    Esto ajusta el tamaño del gráfico dentro de la figura estableciendo el relleno en cada lado. Puedes ajustar los números para aumentar o disminuir el espacio entre el gráfico y los bordes de la figura.

    Además, puedes intentar ajustar el tamaño del lienzo cambiando el parámetro figsize al crear el objeto FigureCanvasTkAgg, como:

    canvas = FigureCanvasTkAgg(fig, master=canvas_frame, figsize=(10, 8))
    

    Esto ajusta el tamaño del lienzo dentro de su marco principal. Puedes ajustar los números para aumentar o disminuir el tamaño del lienzo.

    Recuerda llamar a canvas.draw() después de realizar cualquier ajuste en el gráfico o el lienzo.

Comments are closed.