这是我的第一个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中的情节)相关推荐

  1. java测试类要画UML图吗,如何从Java代码生成UML图(尤其是序列图)?

    如何从Java代码生成UML图(尤其是序列图)? 如何从现有Java代码生成UML图(尤其是序列图)? 14个解决方案 249 votes ObjectAid UML Explorer 是我用过的. ...

  2. java.lang类在电脑哪个位置_Java中的java.lang.Class API 详解

    且将新火试新茶,诗酒趁年华. 概述 Class是一个位于java.lang包下面的一个类,在Java中每个类实例都有对应的Class对象.类对象是由Java虚拟机(JVM)自动构造的. Class类的 ...

  3. java除去类里面的黄色警告_java中使用list会出现黄色警告图标如何去除

    java中使用list会出现黄色警告图标如何去除 悬赏分:0 - 提问时间2010-6-2 14:05 java中使用list会出现黄色警告图标如何去除 提问者:爆扣猩猩- 一级 其他回答共3 条 使 ...

  4. java实体类字段自定义,Spring Boot - 实体中的自定义类字段

    我有一个2自定义类, OzBakim 和 GunlukEtkinlik . 这些类不是实体 . 我需要在实体中使用这些类 . 但是我收到一个错误: 在类路径资源中定义名称为'entityManager ...

  5. java 实体类属性排序_按照list中实体类的某一属性排序

    命名不规范引发的DropDownListFor无法选中 问题的引出: 项目中遇到和以下链接相同的问题,大概可以描述为:后台ViewData["KeyName"],前台Model属性 ...

  6. Java 流(Stream)、文件(File)和IO -- Java ByteArrayOutputStream类

    Java ByteArrayOutputStream类 字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中.创建字节数组输出流对象有以下几种方式. 下面的构造 ...

  7. java spring配置类_spring 配置 Java配置类装配bean

    https://www.cnblogs.com/chenbenbuyi/p/8457700.html 自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应 ...

  8. 【Spring第七篇】Java配置类:JavaConfig

    Java配置类:JavaConfig 在spring配置中 applicationContext.xml <?xml version="1.0" encoding=" ...

  9. java listt add_Java8 使用流抽取ListT集合中T的某个属性操作

    免费资源网 - https://freexyz.cn/ 在java开发中,我们经常会遇到需要从一个集合中,抽取集合中元素的某一个属性.在java8之前,我们通常采用for循环去获取,但java8之后我 ...

最新文章

  1. everything每次打开都会扫描_每次启动车,转方向盘都会咔一下,咋回事?
  2. Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
  3. 4springboot:日志(上)
  4. 阿里云rds linux平台使用wget 工具下载备份与日志文件
  5. 鹅厂机器人“穿着”轮滑鞋大玩前空翻,连人都不敢轻易尝试
  6. 使用AOP与注解记录Java日志
  7. Ulua_toLua_基本案例(八)_LuaAccessingArray
  8. springboot入门_模板
  9. java maven junit_【JUnit】JUnit 与 maven 集成
  10. vue 中 computed 计算属性 的用法
  11. matlab ode45三体问题,“毕达哥拉斯3Body Proxblem”ODE解算器测试的下一步
  12. IT结合测试时,准备数据的注意事项(之二:表之间的关系)。
  13. extern作用详解
  14. android省市区三级联动,NumberPicker实现省市区三级联动的效果
  15. OPPO R9tm 刷机/root/救砖/第三方recovery
  16. 实用的截屏、录屏、图片识字工具推荐
  17. wps画流程图交叉弧形_word流程图-WPS绘制流程图的正确打开方式,超级简单
  18. 计算机无法复制大文件格式,U盘复制文件电脑提示文件过大无法复制怎么解决?...
  19. 趣味计算机知识问答题,趣味问答题及答案
  20. C#入门教程(一)visual studio与winform

热门文章

  1. 1013. 数素数 (20)
  2. Knockout 新版应用开发教程之visible绑定
  3. EMC Networker与mhvtl虚拟磁带库的结合on rhel5.5
  4. 2017计算机考研教材,【考研】2017计算机考研:四大科目参考书推荐
  5. java 循环list 对象_java计算list集合中重复对象的次数及for循环内外创建对象
  6. BufferedInputStream的read方法原理
  7. java process started_Java HistoricProcessInstanceQuery.startedBy方法代碼示例
  8. android 获取网卡mac_在Android机顶盒上 怎么样获取有线网卡MAC地址?
  9. oracle11g 多了个 client,Oracle10g Client Oracle11g DB同时安装发生OCI Error
  10. mysql中鼠标光标消失了_为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢?...