Conjuntos de Julia de plotagem interativa em Python

matplotlibFornece a função de operação interativa, por exemplo, desde que esteja vinculado button_press_event, o evento correspondente pode ser acionado quando a imagem for clicada.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
import time
def OnMouse(evt):
    x,y = evt.xdata, evt.ydata #xdata,ydata即当前坐标
    z = genZ([-2,2,-2,2],800,800)
    julia = getJulia(z,x+y*1j,40)
    jFig,jAx = plt.subplots()
    plt.imshow(julia, cmap=cm.jet)
    plt.gca().set_axis_off()
    plt.show()

# 用于生成Julia集
def getJulia(z,c,n,n0=0,m=2):
    t = time.time()
    c = np.zeros_like(z)+c
    out = abs(z)
    for i in range(n0,n0+n):
        absz = abs(z)
        z[absz>m]=0
        c[absz>m]=0
        out[absz>m]=i
        z = z*z + c
    print("time:",time.time()-t)
    return out

def genZ(axis,nx,ny):
    x0,x1,y0,y1 = axis
    x = np.linspace(x0,x1,nx)
    y = np.linspace(y0,y1,ny)
    real, img = np.meshgrid(x,y)
    z = real + img*1j
    return z

A explicação da getJuliasoma getZpode ser vista no python desenhando conjuntos dinâmicos de Julia, o que é super legal

É claro que, como todos sabemos, matplotliba operação do mouse foi vinculada em , portanto, o evento de clique que foi vinculado deve ser cancelado primeiro.

def drawInter(img,axis):
    fig, ax = plt.subplots()
    plt.imshow(mBrot, cmap=cm.jet, extent=axis)
    plt.gca().set_axis_off()
    #取消链接点击事件
    fig.canvas.mpl_disconnect(
    	fig.canvas.manager.key_press_handler_id)
    #将点击和OnMouse链接起来
    fig.canvas.mpl_connect('button_press_event', OnMouse)
    plt.show()
n = 1000
axis = [-2,1,-1.5,1.5]
z = genZ(axis,1000,1000)
mBrot = getJulia(z,z,50)
drawInter(mBrot,axis)

Desta forma, sempre que você clicar em qualquer ponto do conjunto de Mandelbrot, o conjunto de Julia para aquele ponto é desenhado. O resultado é mostrado na figura

insira a descrição da imagem aqui
Já escrevi um blog com o mesmo nome antes, mas por ter sido escrito diretamente na classe, alguns amigos reclamaram que o código era muito longo

plotagem interativa python conjuntos de Julia

Acho que você gosta

Origin blog.csdn.net/m0_37816922/article/details/123779986
Recomendado
Clasificación