gpt4 book ai didi

python - 在 python 中编码和渲染(网络)图

转载 作者:太空狗 更新时间:2023-10-30 02:34:04 24 4
gpt4 key购买 nike

下面的代码没有呈现我的图表。

import numpy
import matplotlib.pyplot as plt
import matplotlib as mpl
import pylab
import random
import scipy
from matplotlib.mlab import griddata
from pylab import *
from scipy import ndimage
def H(x,y,gamma):
val = HenonMap(x,y,1,1,0.2,gamma)
return val
def HenonIterate(x0,y0,n,gamma):
(x,y) = H(x0,y0,gamma)
for i in xrange (0,n):
(x,y)=H(x,y,gamma)
if (pow(x,2)) + (pow(y,2)) > 100:
return i
return n

def g():
x2=1000
y2=1000
max=100
u = zeros([x2,y2])
for x in range(x2):
for y in range(y2):
y0= .01*y-5.0
x0= -.01*x+5.0
u[x][y] = HenonIterate(x0,y0,max,1.03)
imshow(u)
show()

最佳答案

从您的代码来看,我不确定您的想法是什么,所以我很难直接使用它;但是,我可以向您展示如何在 Python 中创建图形并在 Matplotlib 中呈现它们。

Networkx是一个优秀的 python 库,用于生成图形、分析它们并通过 Matplotlib 或 Graphviz 渲染它们。例如,

from matplotlib import pyplot as MPL
import networkx as NX # import networkx

您可以通过导入数据文件(Networkx 有相当多的模块可以在格式之间进行转换)或使用 Networkx 的 gtraph 生成器之一在 Networkx 中创建图形。为了生成如下所示的图表,我创建了一种特殊类型的二项式随机图表 erdos-renyi

要在 Networkx 中创建图,我只需调用图构造函数并传入所需的节点数和边创建概率。

G = NX.erdos_renyi_graph(10, .3)

在 Networkx 中呈现此图很简单——只需调用 draw 并传入您的图。在幕后,Network 传递在 Matplotlib 中呈现图形所需的所有数据(例如,节点位置、样式属性、标签等)并为您调用 Matplotlib 的plot 方法,传递所有这些数据。用户需要与 Matplotlib 进行的唯一交互是调用 showsavefig 分别将其呈现在屏幕上或文件中。

NX.draw(G)
MPL.show()

如果您想自己生成图形,然后将其交给 Networkx 通过 Matplotlib 进行渲染,这也很简单。例如,在下面,我创建了一个 5 x 5 NumPy 数组 来表示一个邻接矩阵(表示稀疏图数据的最常见格式) :

>>> G = NP.random.randint(0, 2, 25).reshape(5, 5)
>>> G
array([[0, 0, 1, 0, 1],
[1, 0, 0, 1, 1],
[0, 0, 1, 0, 1],
[0, 0, 1, 1, 1],
[0, 1, 0, 0, 1]])

现在使用有向图的标准 Networkx 构造函数将 NumPy 数组转换为 Networkx 图,DiGraph

>>> G1 = NX.DiGraph(G)

>>> len(G1.nodes())
5
>>> type(G1)
<class 'networkx.classes.digraph.DiGraph'>

您可以从邻接矩阵创建无向图来代替有向图;只需使用适当的构造函数,Graph

>>> G2 = NX.Graph(G)

这张图在 Matplotlib 中呈现,完全像上面那个——通过调用 Networkx 的 draw 方法,然后调用 Matplotlib 的 show 将其呈现在屏幕上。

>>> NX.draw(G2)
>>> MPL.show()

enter image description here

关于python - 在 python 中编码和渲染(网络)图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10492535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com