在通过网络进行最短路径算法时,我想生成一个网络图片.我想表示节点(圆圈),链接(线),遍历链接的成本(链接线中间的数字)和链接的容量(它代表的节点旁边的链接线上的数字)在图片里.是否有任何图书馆/软件可以帮助自动创建这张图片?
我可以在Visio或某些绘图应用程序中手动执行此操作,但我想在更改/调整网络时从代码生成它们.
NetworkX主要用于图形分析,PyGraphviz主要用于绘图,它们旨在协同工作.然而,至少有一个方面,NetworkX的图形绘制(通过MatPlotLib)优于PyGraphviz的图形绘制(通过Graphviz),即NetworkX具有弹簧布局算法(可通过spring_layout函数访问)专门用于有向图,而PyGraphviz有几个弹簧布局算法(可通过neato程序和其他方法访问),将有向图布置为无向图.真正处理图形中方向的唯一Graphviz/PyGraphviz布局程序是dot,但dot创建分层布局,而不是强制定向布局.
下面是一个示例,显示了有向图的弹簧布局的NetworkX和PyGraphviz之间的区别:
import networkx as nx
import pygraphviz as pgv
import matplotlib.pyplot as ppt
edgelist = [(1,2),(1,9),(3,2),(3,9),(4,5),(4,6),(4,9),(5,9),(7,8),(7,9)]
nxd = nx.DiGraph()
nxu = nx.Graph()
gvd = pgv.AGraph(directed=True)
gvu = pgv.AGraph()
nxd.add_edges_from(edgelist)
nxu.add_edges_from(edgelist)
gvd.add_edges_from(edgelist)
gvu.add_edges_from(edgelist)
pos1 = nx.spring_layout(nxd)
nx.draw_networkx(nxd,pos1)
ppt.savefig('1_networkx_directed.png')
ppt.clf()
pos2 = nx.spring_layout(nxu)
nx.draw_networkx(nxu,pos2)
ppt.savefig('2_networkx_undirected.png')
ppt.clf()
gvd.layout(prog='neato')
gvd.draw('3_pygraphviz_directed.png')
gvu.layout(prog='neato')
gvu.draw('4_pygraphviz_undirected.png')
Run Code Online (Sandbox Code Playgroud)
1_networkx_directed.png :( http://farm9.staticflickr.com/8516/8521343506_0c5d62e013.jpg)
2_networkx_undirected.png :( http://farm9.staticflickr.com/8246/8521343490_06ba1ec8e7.jpg)
3_pygraphviz_directed.png :( http://farm9.staticflickr.com/8365/8520231171_ef7784d983.jpg)
4_pygraphviz_undirected.png :( http://farm9.staticflickr.com/8093/8520231231_80c7eab443.jpg)
绘制的第三和第四个数字基本相同,但对于箭头(整个数字已经旋转,但除此之外,没有区别).然而,第一和第二个数字的布局不同 - 而且不仅仅是因为NetworkX的布局算法引入了随机元素.
重复运行上面的代码表明这不是偶然发生的.NetworkX的spring_layout功能显然是假设如果从一个节点到另一个节点存在弧,第二个节点应该比第一个节点更接近图的中心(即,如果描述的图edgelist …
我正在尝试更改空间树中的默认方向,但无法确定添加位置:
st.switchPosition("top", "animate", {
onComplete: function() {
alert('completed!');
}
});
Run Code Online (Sandbox Code Playgroud)
这样树就会从顶部开始而不是默认的右边.
在我看过的例子中,switchPosition仅用于事件处理程序,我不打算这样做.
所以在示例中(取自infovis网站:Infovis - spacetree),我应该在哪里添加代码(或任何代码)以更改默认方向?
var labelType,useGradients,nativeTextSupport,animate;
(function() {
var ua = navigator.userAgent,
iStuff = ua.match(/iPhone/i) || ua.match(/iPad/i),
typeOfCanvas = typeof HTMLCanvasElement,
nativeCanvasSupport = (typeOfCanvas == 'object' || typeOfCanvas == 'function'),
textSupport = nativeCanvasSupport
&& (typeof document.createElement('canvas').getContext('2d').fillText == 'function');
//I'm setting this based on the fact that ExCanvas provides text support for IE
//and that as of today iPhone/iPad current text support is lame
labelType = (!nativeCanvasSupport || …Run Code Online (Sandbox Code Playgroud) 这是我正在使用的JSON文件,我想使用ysec.domain([d3.min(data,function(d)} {return(三列“ male”,“ female”和“ both “)}),d3.max(数据,函数(d){return(” male“,” female“和” both“这三列的最大值)}))); 无论如何,我是否要将最小值设置为三列中的最小值:“男性”,“女性”和“两者”,这也适用于最大值?
[{"year":"1960","male":"61.7","female":"65.7","both":"63.7","rankmale":"47","rankfemale":"50","rankall":"45"},
{"year":"1970","male":"65.4","female":"70.2","both":"67.7","rankmale":"45","rankfemale":"45","rankall":"44"},
{"year":"1980","male":"68.9","female":"74.2","both":"71.5","rankmale":"33","rankfemale":"36","rankall":"29"},
{"year":"1990","male":"71.9","female":"76.9","both":"74.3","rankmale":"28","rankfemale":"30","rankall":"30"},
{"year":"2000","male":"76.1","female":"80.1","both":"78.1","rankmale":"11","rankfemale":"24","rankall":"15"},
{"year":"2011","male":"80.1","female":"84.6","both":"82.3","rankmale":"6","rankfemale":"8","rankall":"5"}]
Run Code Online (Sandbox Code Playgroud) 我有乘客出行频率的数据集:
CountryOrigin - 有40多个国家名称
(印度,澳大利亚,中国,日本,巴塔姆,巴厘岛,新加坡)
CountryDestination - 有40多个国家名称(印度,澳大利亚,中国,日本,巴塔姆,巴厘岛,新加坡)
IND AUS CHI JAP BAT SING
IND 0 4 10 12 24 89
AUS 19 0 12 9 7 20
CHI 34 56 0 2 6 18
JAP 12 17 56 0 2 2
SING 56 34 7 3 35 0
Run Code Online (Sandbox Code Playgroud)
我需要x轴的原点位置名称和y轴的目的地名称,频率应表示为气泡的大小.
我正在构建一个页面以可视化节点和边缘的网络。vis.js可以满足我的要求,但是我的数据非常慢。
我正在使用的代码几乎完全从vis.js的示例之一复制而来。不同之处在于下面的数组节点和边每个包含〜4000个元素(在下面的代码中,我将它们截断为几个元素)。
这样的页面需要几分钟才能加载。关于如何使其更快的任何想法?
<div id="mynetwork"></div>
<script type="text/javascript">
var color = 'gray';
var len = undefined;
var nodes = [{"group": 1, "id": 1, "label": "my first node"}, {"group": 0, "id": 2944, "label": "my nth node"}];
var edges = [{"to": 2944, "from": 1}, {"to": 2945, "from": 2}, {"to": 2946, "from": 3}];
// create a network
var container = document.getElementById('mynetwork');
var data = {
nodes: nodes,
edges: edges
};
var options = {
nodes: {
shape: 'dot',
size: 30, …Run Code Online (Sandbox Code Playgroud) 在IntelliJ中调试时是否可以观察BufferedImage对象?
我的意思是查看图像的可视内容,而不是内存标识.
是否也可以直观地查看自定义对象,即编写一些自定义可视化器?
我目前正在阅读t-SNE可视化技术,并且提到使用PCA可视化高维数据的一个缺点是它只保留 了点之间的大的成对距离.在高维度上相距很远的意义点在低维度上也会显得相距甚远,但除了所有其他点距离被搞砸之外.
有人可以帮助我理解为什么这是什么,它是什么意思图形化?
非常感谢!
我敢肯定这应该很容易,但是我无法从seaborn文档中找到如何特别选择要显示的x标签分类变量的顺序?
我每周有以下几个小时的工作时间,但我想在我的x轴上从0-10、11-20、21-30、31-40和超过40小时订购这些时间。我怎样才能做到这一点?
def hours_per_week (x):
if x < 11: return '0-10 hours'
elif x < 21: return '11-20 hours'
elif x < 31: return '21-30 hours'
elif x < 41: return '31-40 hours'
else: return 'More than 40 hours'
Run Code Online (Sandbox Code Playgroud)
这是我绘制图表的最原始代码。注收入猫'是人挣分类分组50K下的人与收入以上50K
plot_income_cat_hours = sns.countplot(x='hours_per_week_grouping',
hue='income-cat', data=data)
Run Code Online (Sandbox Code Playgroud)
它描述了分布在一个区域中的少量物品(学校)。对于输入,我有一个区域地图,每个区域都有一个数字。我想将其分布在该地区周围的许多地方。如果它们不会跨区域边界扩散,那就更好了,但是仅将它们分布就足够了。在区域内一些良好的排斥点可能有效。
蜂巢图可以做的非常相似,可以在地图上完成。奖励问题-实际上,我一直在寻求动画效果,但是只能想到非常复杂的方法来实现,因此随着总和的增加,会增加新的积分。
下面的代码在地图上将点放置在质心中,并将数字作为大小。(我无法将地图正确导出为单个文件,因此坐标有些混乱,但是原理是相同的。)
places = st_read("https://gist.githubusercontent.com/peeter-t2/9646a4169e993948fa97f6f503a0688b/raw/cb4e910bf153e51e3727dc9d1c73dd9ef86d2556/kih1897m.geojson", stringsAsFactors = FALSE)
schools <- read_tsv("https://gist.github.com/peeter-t2/34467636b3c1017e89f33284d7907b42/raw/6ea7dd6c005ef8577b36f5e84338afcb6c76b707/school_nums.tsv")
schools_geo <- merge(places,schools,by.x="KIHELKOND",by.y="Kihelkond") #94 matches
p<- schools_geo %>%
ggplot()+
geom_sf(data=schools_geo)+
geom_sf(data=st_centroid(schools_geo),aes(size=value))+
theme_bw()
p
Run Code Online (Sandbox Code Playgroud)
谢谢!
visualization ×10
javascript ×2
python ×2
r ×2
beeswarm ×1
bubble-chart ×1
d3.js ×1
debugging ×1
drawing ×1
ggplot2 ×1
graph ×1
graph-theory ×1
graphviz ×1
html ×1
infovis ×1
java ×1
json ×1
matplotlib ×1
networking ×1
networkx ×1
pandas ×1
pca ×1
pygraphviz ×1
r-sf ×1
seaborn ×1
space-tree ×1
thejit ×1
vis.js ×1