标签: visualization

生成图形的图片/图形

在通过网络进行最短路径算法时,我想生成一个网络图片.我想表示节点(圆圈),链接(线),遍历链接的成本(链接线中间的数字)和链接的容量(它代表的节点旁边的链接线上的数字)在图片里.是否有任何图书馆/软件可以帮助自动创建这张图片?

我可以在Visio或某些绘图应用程序中手动执行此操作,但我想在更改/调整网络时从代码生成它们.

networking drawing visualization graph-theory shortest-path

3
推荐指数
1
解决办法
333
查看次数

Graphviz/PyGraphviz中有向图的NetworkX风格弹簧模型布局

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 …

visualization graph graphviz networkx pygraphviz

3
推荐指数
1
解决办法
6688
查看次数

如何更改infovis spacetree中的默认方向?

我正在尝试更改空间树中的默认方向,但无法确定添加位置:

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)

javascript visualization infovis space-tree thejit

3
推荐指数
1
解决办法
1406
查看次数

如何使用d3.domain从JSON文件的多个列中获取d3.min和d3.max?

这是我正在使用的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)

html json visualization d3.js

3
推荐指数
2
解决办法
857
查看次数

R编程(气泡图可视化)

我有乘客出行频率的数据集:

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轴的目的地名称,频率应表示为气泡的大小.

visualization bubble-chart r data-analysis

3
推荐指数
1
解决办法
4547
查看次数

vis.js的许多节点/边缘速度较慢

我正在构建一个页面以可视化节点和边缘的网络。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)

javascript visualization vis.js

3
推荐指数
2
解决办法
5305
查看次数

在IntelliJ中调试时是否可以观察BufferedImage对象?

在IntelliJ中调试时是否可以观察BufferedImage对象?

我的意思是查看图像的可视内容,而不是内存标识.

是否也可以直观地查看自定义对象,即编写一些自定义可视化器?

java debugging visualization intellij-idea

3
推荐指数
1
解决办法
1003
查看次数

PCA的意思是仅保留大的成对距离?

我目前正在阅读t-SNE可视化技术,并且提到使用PCA可视化高维数据的一个缺点是它只保留 了点之间的大的成对距离.在高维度上相距很远的意义点在低维度上也会显得相距甚远,但除了所有其他点距离被搞砸之外.

有人可以帮助我理解为什么这是什么,它是什么意思图形化?

非常感谢!

python visualization machine-learning matplotlib pca

3
推荐指数
1
解决办法
398
查看次数

在seaborn图表中对分类标签进行排序

我敢肯定这应该很容易,但是我无法从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)

当前这是我的绘图的外观(由于不相关,上面的代码中未包含一些其他格式): 在此处输入图片说明

python visualization pandas seaborn

3
推荐指数
1
解决办法
4915
查看次数

R可视化:地图上的合理排斥点(蜂拥?)

我正在尝试复制大约这样的地图。 描述

它描述了分布在一个区域中的少量物品(学校)。对于输入,我有一个区域地图,每个区域都有一个数字。我想将其分布在该地区周围的许多地方。如果它们不会跨区域边界扩散,那就更好了,但是仅将它们分布就足够了。在区域内一些良好的排斥点可能有效。

蜂巢图可以做的非常相似,可以在地图上完成。奖励问题-实际上,我一直在寻求动画效果,但是只能想到非常复杂的方法来实现,因此随着总和的增加,会增加新的积分。

下面的代码在地图上将点放置在质心中,并将数字作为大小。(我无法将地图正确导出为单个文件,因此坐标有些混乱,但是原理是相同的。)

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 r ggplot2 r-sf beeswarm

3
推荐指数
1
解决办法
93
查看次数