java 外来类,外来的Matplotlib图(tkinter中的情节)
这是我的第一个python项目,我试图在Matplotlib中绘制Mandelbrot集并将其放入tkinter框架中 . 这已经完成,但是随着GUI出现了一个无关的空图 . 这个空图具有正确数量的刻度线,而GUI中的绘图在绘图上的刻度标记数量不正确(我无法确定刻度值来自哪里,但我怀疑是像素) . 我现在已经搜索了一段时间如何解决这个问题无济于事 . 我已经尝试过canvas.draw,搞乱方法和类,我仍然无法弄明白......以下是将运行的代码的摘录 . 指定显示的代码在名为mandelbrot_image和MainPage类的方法中提前谢谢 .
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import tkinter as tk
from tkinter import ttk
from tkinter import *
import numpy as np
from numba import jit
from matplotlib import pyplot as plt
from matplotlib import colors
#maths and display code derived/inspired from Jean Francois Puget
#https://www.ibm.com/developerworks/community/blogs/jfp/entry/My_Christmas_Gift?lang=en
@jit
def mandelbrot(z,maxiter,horizon,log_horizon):
c = z
for n in range(maxiter):
az = abs(z)
if az > horizon:
return n - np.log(np.log(az))/np.log(2) + log_horizon
z = z*z + c
return 0
@jit
def mandelbrot_set(xmin,xmax,ymin,ymax,width,height,maxiter):
horizon = 2.0 ** 40
log_horizon = np.log(np.log(horizon))/np.log(2)
r1 = np.linspace(xmin, xmax, width)
r2 = np.linspace(ymin, ymax, height)
n3 = np.empty((width,height))
for i in range(width):
for j in range(height):
n3[i,j] = mandelbrot(r1[i] + 1j*r2[j],maxiter,horizon, log_horizon)
return (r1,r2,n3)
LARGE_FONT= ("Verdana", 12)
def mandelbrot_image(xmin=-2.,xmax=0.5,ymin=-1.25,ymax=1.25,width=10,height=10,\
maxiter=1000,cmap='jet',gamma=0.3):
dpi = 80
img_width = dpi * width
img_height = dpi * height
x,y,z = mandelbrot_set(xmin,xmax,ymin,ymax,img_width,img_height,maxiter)
fig = Figure(figsize=(width, height))
ax = fig.add_subplot(111)
ticks = np.arange(0,img_width,3*dpi)
x_ticks = xmin + (xmax-xmin)*ticks/img_width
plt.xticks(ticks, x_ticks)
y_ticks = ymin + (ymax-ymin)*ticks/img_width
plt.yticks(ticks, y_ticks)
ax.set_title("The Mandelbrot set")
norm = colors.PowerNorm(gamma)
ax.imshow(z.T,cmap=cmap,origin='lower',norm=norm)
return fig
class base(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.iconbitmap(self, "iconz.ico")
tk.Tk.wm_title(self, "Mandelbrot Renderer")
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, MainPage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
label = tk.Label(self, text="Start Page", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button = tk.Button(self, text="Lets Begin",
command=lambda: controller.show_frame(MainPage))
button.pack()
class MainPage(tk.Frame):
def getcheckvalue(self):
print (self.mvar.get())
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Graph Page!", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button1 = ttk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
fig = mandelbrot_image()
canvas = FigureCanvasTkAgg(fig, self)
canvas.show()
canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
toolbar = NavigationToolbar2TkAgg(canvas, self)
toolbar.update()
canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
app = base()
app.geometry ("800x600")
app.mainloop()
java 外来类,外来的Matplotlib图(tkinter中的情节)相关推荐
- java测试类要画UML图吗,如何从Java代码生成UML图(尤其是序列图)?
如何从Java代码生成UML图(尤其是序列图)? 如何从现有Java代码生成UML图(尤其是序列图)? 14个解决方案 249 votes ObjectAid UML Explorer 是我用过的. ...
- java.lang类在电脑哪个位置_Java中的java.lang.Class API 详解
且将新火试新茶,诗酒趁年华. 概述 Class是一个位于java.lang包下面的一个类,在Java中每个类实例都有对应的Class对象.类对象是由Java虚拟机(JVM)自动构造的. Class类的 ...
- java除去类里面的黄色警告_java中使用list会出现黄色警告图标如何去除
java中使用list会出现黄色警告图标如何去除 悬赏分:0 - 提问时间2010-6-2 14:05 java中使用list会出现黄色警告图标如何去除 提问者:爆扣猩猩- 一级 其他回答共3 条 使 ...
- java实体类字段自定义,Spring Boot - 实体中的自定义类字段
我有一个2自定义类, OzBakim 和 GunlukEtkinlik . 这些类不是实体 . 我需要在实体中使用这些类 . 但是我收到一个错误: 在类路径资源中定义名称为'entityManager ...
- java 实体类属性排序_按照list中实体类的某一属性排序
命名不规范引发的DropDownListFor无法选中 问题的引出: 项目中遇到和以下链接相同的问题,大概可以描述为:后台ViewData["KeyName"],前台Model属性 ...
- Java 流(Stream)、文件(File)和IO -- Java ByteArrayOutputStream类
Java ByteArrayOutputStream类 字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中.创建字节数组输出流对象有以下几种方式. 下面的构造 ...
- java spring配置类_spring 配置 Java配置类装配bean
https://www.cnblogs.com/chenbenbuyi/p/8457700.html 自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应 ...
- 【Spring第七篇】Java配置类:JavaConfig
Java配置类:JavaConfig 在spring配置中 applicationContext.xml <?xml version="1.0" encoding=" ...
- java listt add_Java8 使用流抽取ListT集合中T的某个属性操作
免费资源网 - https://freexyz.cn/ 在java开发中,我们经常会遇到需要从一个集合中,抽取集合中元素的某一个属性.在java8之前,我们通常采用for循环去获取,但java8之后我 ...
最新文章
- everything每次打开都会扫描_每次启动车,转方向盘都会咔一下,咋回事?
- Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
- 4springboot:日志(上)
- 阿里云rds linux平台使用wget 工具下载备份与日志文件
- 鹅厂机器人“穿着”轮滑鞋大玩前空翻,连人都不敢轻易尝试
- 使用AOP与注解记录Java日志
- Ulua_toLua_基本案例(八)_LuaAccessingArray
- springboot入门_模板
- java maven junit_【JUnit】JUnit 与 maven 集成
- vue 中 computed 计算属性 的用法
- matlab ode45三体问题,“毕达哥拉斯3Body Proxblem”ODE解算器测试的下一步
- IT结合测试时,准备数据的注意事项(之二:表之间的关系)。
- extern作用详解
- android省市区三级联动,NumberPicker实现省市区三级联动的效果
- OPPO R9tm 刷机/root/救砖/第三方recovery
- 实用的截屏、录屏、图片识字工具推荐
- wps画流程图交叉弧形_word流程图-WPS绘制流程图的正确打开方式,超级简单
- 计算机无法复制大文件格式,U盘复制文件电脑提示文件过大无法复制怎么解决?...
- 趣味计算机知识问答题,趣味问答题及答案
- C#入门教程(一)visual studio与winform
热门文章
- 1013. 数素数 (20)
- Knockout 新版应用开发教程之visible绑定
- EMC Networker与mhvtl虚拟磁带库的结合on rhel5.5
- 2017计算机考研教材,【考研】2017计算机考研:四大科目参考书推荐
- java 循环list 对象_java计算list集合中重复对象的次数及for循环内外创建对象
- BufferedInputStream的read方法原理
- java process started_Java HistoricProcessInstanceQuery.startedBy方法代碼示例
- android 获取网卡mac_在Android机顶盒上 怎么样获取有线网卡MAC地址?
- oracle11g 多了个 client,Oracle10g Client Oracle11g DB同时安装发生OCI Error
- mysql中鼠标光标消失了_为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢?...