我有一個帶有 20 個標簽和相應值的條形圖,它嵌入在 tkinter 圖形畫布上。滑塊使用戶能夠一次查看 5 個條形值。在Python 中調整方法:在 tkinter 中正確嵌入帶有滑塊的 matplotlib 圖我有以下內容:
import random
import numpy as np
import matplotlib
import tkinter as Tk
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
matplotlib.use('TkAgg')
root = Tk.Tk()
root.wm_title("Barplot with slider")
fig = plt.Figure()
canvas = FigureCanvasTkAgg(fig, root)
canvas.draw()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
channels=
['a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u']
X=range(len(channels))
Y=np.random.randint(0,100, len(X))
M=max(Y)
N=5
ax=fig.add_subplot(111)
ax.axis([0, N, 0,M])
ax.set_xticks(range(len(channels)))
ax.set_xticklabels(channels)
fig.subplots_adjust(bottom=0.25)
ax.bar(X,Y,width=0.7,align='center',color='green',ecolor='black')
ax_time = fig.add_axes([0.12, 0.1, 0.78, 0.03])
s_time = Slider(ax_time, 'Channels', 0, len(X)-N, valinit=0,valstep=1)
def update(val):
N=5
pos = s_time.val
ax.axis([pos-1/2, pos N-1/2, 0,M 1])
fig.canvas.draw_idle()
s_time.on_changed(update)
Tk.mainloop()
它作業正常,但有一件小事我覺得很煩人。當一個人運行模塊時,首先出現的是一個顯示所有 20 個條形的條形圖。我不想要這樣,因為如果我有大量的條形,那在美學上是不愉快的。
相反,我希望第一個圖出現在我的畫布上,只包含標記為“a”、“b”、“c”、“d”、“e”的前 5 個條。
uj5u.com熱心網友回復:
由于您已經設定了更新功能,只需將默認值設定為 0:
...
s_time.on_changed(update)
s_time.set_val(0)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327485.html
標籤:Python matplotlib 特金特
上一篇:Terraform匯入地圖資源
