Tkinter canvas 绘制 windrose
Tkinter canvas to plot windrose
在 tkinter 中绘制 Windrose 时遇到一些问题 window。我无法让 windrose 单独显示,window 显示了绘图后面的另一个网格(见下图)。有什么方法可以让我只显示 windrose 而没有背景中的额外网格吗?最终代码将每 x 秒更新一次,这就是情节动画的原因
from tkinter import *
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.animation as animation
from matplotlib import style
import tkinter as tk
root = Tk()
style.use("ggplot")
fig = plt.figure(figsize=(6,4),dpi=100)
a = fig.add_subplot(111)
def animate(i):
ws = np.random.random(500) * 6
wd = np.random.random(500) * 360
a.clear()
rect = [0.1,0.1,0.8,0.8]
wa = WindroseAxes(fig, rect)
fig.add_axes(wa)
wa.bar(wd, ws, normed=True, opening=0.8, edgecolor='white')
wa.set_legend()
canvas = FigureCanvasTkAgg(fig,root)
canvas.show()
canvas.get_tk_widget().pack(side=tk.BOTTOM,fill=tk.BOTH,
expand=True,anchor='s')
ani = animation.FuncAnimation(fig, animate, interval=1000)
root.mainloop()
您正在绘制两个重叠的地块:
from tkinter import *
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.animation as animation
from matplotlib import style
import tkinter as tk
root = Tk()
style.use("ggplot")
fig = plt.figure(figsize=(6,4),dpi=100)
#a = fig.add_subplot(111) # this gives you the square grid in the background
def animate(i):
ws = np.random.random(500) * 6
wd = np.random.random(500) * 360
# a.clear() # not needed if plot doesn't exist
fig.clear() # we need to clear the figure you're actually plotting to
rect = [0.1,0.1,0.8,0.8]
wa = WindroseAxes(fig, rect)
fig.add_axes(wa)
wa.bar(wd, ws, normed=True, opening=0.8, edgecolor='white')
wa.set_legend()
canvas = FigureCanvasTkAgg(fig,root)
canvas.show()
canvas.get_tk_widget().pack(side=tk.BOTTOM,fill=tk.BOTH,
expand=True,anchor='s')
ani = animation.FuncAnimation(fig, animate, interval=1000)
root.mainloop()
在 tkinter 中绘制 Windrose 时遇到一些问题 window。我无法让 windrose 单独显示,window 显示了绘图后面的另一个网格(见下图)。有什么方法可以让我只显示 windrose 而没有背景中的额外网格吗?最终代码将每 x 秒更新一次,这就是情节动画的原因
from tkinter import *
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.animation as animation
from matplotlib import style
import tkinter as tk
root = Tk()
style.use("ggplot")
fig = plt.figure(figsize=(6,4),dpi=100)
a = fig.add_subplot(111)
def animate(i):
ws = np.random.random(500) * 6
wd = np.random.random(500) * 360
a.clear()
rect = [0.1,0.1,0.8,0.8]
wa = WindroseAxes(fig, rect)
fig.add_axes(wa)
wa.bar(wd, ws, normed=True, opening=0.8, edgecolor='white')
wa.set_legend()
canvas = FigureCanvasTkAgg(fig,root)
canvas.show()
canvas.get_tk_widget().pack(side=tk.BOTTOM,fill=tk.BOTH,
expand=True,anchor='s')
ani = animation.FuncAnimation(fig, animate, interval=1000)
root.mainloop()
您正在绘制两个重叠的地块:
from tkinter import *
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.animation as animation
from matplotlib import style
import tkinter as tk
root = Tk()
style.use("ggplot")
fig = plt.figure(figsize=(6,4),dpi=100)
#a = fig.add_subplot(111) # this gives you the square grid in the background
def animate(i):
ws = np.random.random(500) * 6
wd = np.random.random(500) * 360
# a.clear() # not needed if plot doesn't exist
fig.clear() # we need to clear the figure you're actually plotting to
rect = [0.1,0.1,0.8,0.8]
wa = WindroseAxes(fig, rect)
fig.add_axes(wa)
wa.bar(wd, ws, normed=True, opening=0.8, edgecolor='white')
wa.set_legend()
canvas = FigureCanvasTkAgg(fig,root)
canvas.show()
canvas.get_tk_widget().pack(side=tk.BOTTOM,fill=tk.BOTH,
expand=True,anchor='s')
ani = animation.FuncAnimation(fig, animate, interval=1000)
root.mainloop()