子窗口不显示matplotlib的图形
时间: 2023-11-03 19:25:54 浏览: 78
如果您使用matplotlib绘制图形,并且这些图形不在子窗口中显示,这可能是由于Matplotlib需要一个事件循环才能正确地显示图形。您可以尝试在绘制图形之后添加以下代码:
```
import matplotlib.pyplot as plt
plt.show(block=False)
```
`show()`函数会启动一个事件循环,以确保图形正确显示。`block=False`参数将防止该函数阻止程序继续运行。如果这个方法不行,您可以尝试使用`Qt`或`Tkinter`等工具包来创建您的GUI,并将matplotlib嵌入其中。
相关问题
怎么在子窗口中用matplotlib画图
在子窗口中使用 Matplotlib 绘制图形,您需要使用 Matplotlib 的 `FigureCanvasTkAgg` 类将图形绘制到 Tkinter 窗口中。
下面是一个示例代码,它演示了如何在子窗口中使用 Matplotlib 来绘制一个简单的折线图:
```python
import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
root = tk.Tk()
root.title("父窗口")
# 创建子窗口
child = tk.Toplevel(root)
child.title("子窗口")
child.geometry("400x300")
# 创建 Matplotlib 图形
fig = plt.Figure(figsize=(4, 3), dpi=100)
ax = fig.add_subplot(111)
ax.plot([1, 2, 3, 4, 5], [2, 3, 5, 4, 6])
# 将图形绘制到 Tkinter 窗口中
canvas = FigureCanvasTkAgg(fig, master=child)
canvas.draw()
canvas.get_tk_widget().pack()
root.mainloop()
```
在这个示例中,我们首先创建了一个子窗口,然后使用 Matplotlib 创建了一个 `Figure` 对象和一个 `Axes` 对象,最后使用 `FigureCanvasTkAgg` 类将图形绘制到 Tkinter 窗口中。
您可以根据需要自定义图形,并将其绘制到子窗口中。
matplotlib同时显示多个绘图窗口
Matplotlib是一个强大的Python数据可视化库,它允许你在同一个程序中创建并显示多个独立的图形窗口。为了在同一程序中同时显示多个绘图窗口,你可以采用以下步骤:
1. **创建新窗口**:首先导入`matplotlib.pyplot`模块,然后使用`plt.figure()`函数创建新的图形窗口。每次调用这个函数都会创建一个新的窗口。
```python
import matplotlib.pyplot as plt
# 创建第一个窗口
fig1 = plt.figure()
```
2. **绘制内容**:在每个窗口上添加你想要的图表。例如,如果你想在同一窗口中画两条线,可以这样做:
```python
# 绘制第一条线
ax1 = fig1.add_subplot(1, 2, 1) # (rows, columns, index)
plt.plot([1, 2, 3], [4, 5, 6])
# 绘制第二条线
ax2 = fig1.add_subplot(1, 2, 2)
plt.plot([7, 8, 9], [10, 11, 12])
```
3. **显示窗口**:最后,通过`.show()`方法展示所有创建的窗口:
```python
plt.show() # 这将显示整个包含两个子窗口的图形
```
如果你需要控制各个窗口的行为,如调整大小、位置等,可以在`add_subplot()`中传递额外的参数,或者在创建窗口后直接操作其属性。
阅读全文