如何解决没有适用于`vispy.visuals.GraphVisual`的示例我的代码只是显示空白屏幕
我尝试从许多来源进行谷歌搜索和拼凑示例。这是我所拥有的:
import numpy as np
from vispy import app
from vispy import visuals
from vispy.visuals.transforms import STTransform
import networkx as nx
class Canvas(app.Canvas):
def __init__(self,**kwargs):
super().__init__(title="Simple NetworkX Graph",keys="interactive",size=(600,600))
graph = nx.path_graph(8)
#graph = nx.adjacency_matrix(
#nx.fast_gnp_random_graph(500,0.005,directed=True))
layout = nx.layout.circular_layout
self.matrix = nx.adjacency_matrix(graph)
self.visual = visuals.GraphVisual(
nx.adjacency_matrix(graph),layout=layout,line_color='white',arrow_type="angle_30",arrow_size=30,node_symbol="disc",node_size=20,face_color=(1,0.5),border_width=0.0,animate=True,directed=True)
self.visual.transform = STTransform((1,1),(20,20))
self.show()
#def on_resize(self,event):
#set_viewport(0,*event.physical_size)
def on_draw(self,event):
clear(color=True,depth=True)
if __name__ == '__main__':
c = Canvas(title="Graph")
app.run()
输出为空白(黑色)屏幕,未显示任何其他内容。
我的目标是使用VisPy显示一个简单的网络图。您是否可以使用此功能,您可以发布您的代码/相关代码吗?
解决方法
您的onPressed: () async {
List<Pdetails> pdl = new List<Pdetails>();
for (var product in products) {
Pdetails pdetails = new Pdetails(product.item,product.sPrice.toDouble(),product.q);
pdl.add(pdetails);
}
sOrder = apiServices();
porder = Porder(globals.vendorid,pdl);
final saveResponse =
await sOrder.saveOrderData(porder);
// showCustomDialog(products,context);
},```
方法似乎缺少最重要的部分,即调用视觉对象的draw方法。请参阅vispy存储库中的图形示例:
https://github.com/vispy/vispy/blob/master/examples/basics/visuals/graph.py
以下是该示例中的方法:
on_draw
,
一种选择是不使用VisPy,而使用matplotlib
:
import matplotlib.pyplot as plt
import networkx as nx
G = nx.path_graph(8)
nx.draw(G)
plt.show()
以上内容非常迅速地在窗口中显示图形。
另一个替代的lib是grave
:
import networkx as nx
import matplotlib.pyplot as plt
from grave import plot_network
# Generate a networkx graph
graph = nx.powerlaw_cluster_graph(50,1,.2)
# Plot it
plot_network(graph)
这似乎允许某些形式的图形交互(用鼠标)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。