我使用了以下代碼(與我的問題有關)
fig = plt.Figure()
canvas = FigureCanvasTkAgg(fig, root)
canvas.get_tk_widget().grid(row=6, column=0, columnspan=3, rowspan=3, sticky=W E N S, padx=0, pady=0)
ax = fig.add_subplot(111)
fig.subplots_adjust(bottom=0.25)
X = np.arange(1,rec[1] 1,1)
Y = np.arange(1,rec[0] 1,1)
x , y = np.meshgrid(X,Y)
# Initial plots
con = ax.contourf(x,y,dfs[1], levels = levels, cmap=cm.jet, alpha = 0.5, antialiased = True)
cbar = fig.colorbar(con, ax=ax)
ax.axis([1, 12, 1, 6])
ax.axis('equal') #<-------------------------
ax.set_title('Frequency: f=%f' %float(avector[1]))
這里ax.axis('equal')設定 x 和 y 軸相同的比例。我得到了以下情節

如何使框架適合藍色圖?(我想洗掉白色區域)
謝謝!
完整代碼:
以下代碼是從 .xlsx 檔案上的五個(滑塊:0 ~ 4).xlsx 檔案繪制等高線tkinter。每個檔案只包含矩陣 12X6 中的數字資料,例如

from tkinter import *
import tkinter.ttk as ttk
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
import ipywidgets as wg
import os
import pandas as pd
from matplotlib.ticker import MaxNLocator
from matplotlib.colors import BoundaryNorm
import math
from matplotlib.ticker import LinearLocator
%matplotlib widget
from matplotlib.widgets import Slider
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
matplotlib.use('TkAgg')
root = Tk()
root.title('TEST')
root.geometry("800x800")
cbar = None
def plot_noise():
# ============================================Read .xlsx file=====================================
folder = r'C:\Users\Dian-Jing Chen\Desktop\Work\test_read'
files = os.listdir(folder)
dfs = {}
for i, file in enumerate(files):
if file.endswith('.xlsx'):
dfs[i] = pd.read_excel(os.path.join(folder,file), sheet_name='Z=143', header = None, skiprows=[0], usecols = "B:M")
num = i 1
rec = np.shape(dfs[0])
rmm = np.concatenate([dfs[0], dfs[1]])
for jj in range(2,num):
rmm = np.concatenate([rmm, dfs[jj]])
# =================================================PLOT===========================================
fig, ax = plt.subplots()
canvas = FigureCanvasTkAgg(fig, root)
canvas.get_tk_widget().grid(row=3, column=0, columnspan=3, rowspan=3, sticky=W E N S, padx=0, pady=0)
# ===============================================contourf=========================================
fig.subplots_adjust(bottom=0.25)
X = np.arange(1,rec[1] 1,1)
Y = np.arange(1,rec[0] 1,1)
x , y = np.meshgrid(X,Y)
# ==============================================color bar=========================================
cbar_max = math.floor(np.min(rmm))
cbar_min = math.ceil(np.max(rmm))
cbar_num_colors = 200
cbar_num_format = "%d"
levels = MaxNLocator(nbins=cbar_num_colors).tick_values(cbar_min, cbar_max)
# ============================================Initial plot========================================
con = ax.contourf(x,y,dfs[1], levels = levels, cmap=cm.jet, alpha = 0.5, antialiased = True)
cbar = fig.colorbar(con,ax = ax)
ax.axis([1, 12, 1, 6])
ax.axis('equal')
# ================================================Slider==========================================
slider_bar = fig.add_axes([0.12, 0.1, 0.78, 0.03])
slider_de = Slider(slider_bar, 's_bar', 0, num-1, valinit=1,valfmt='%0.0f', valstep=1)
num_on_slider = []
def update(val):
num_on_slider.append(slider_de.val)
for ii in range(0,num):
if num_on_slider[-1] == ii:
con = ax.contourf(x,y,dfs[ii], levels = levels, cmap=cm.jet, alpha = 0.5, antialiased = True)
ax.axis([1, 12, 1, 6])
ax.axis('equal')
slider_de.on_changed(update)
# =================================================GUI - Tkinter=======================================
resultButton = ttk.Button(root, text = 'show', command = plot_noise)
resultButton.grid(column=0, row=1, pady=15, sticky=W)
root.mainloop()
uj5u.com熱心網友回復:
你可以改變這一行:
ax.axis('equal')
到:
ax.set_aspect('equal', 'box')
輸出:提示:我對這個無花果使用了假資料!

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/402799.html
標籤:
上一篇:天線方向圖極坐標圖
