小编Cur*_*tLH的帖子

Python NetworkX - 根据属性选项的数量自动设置节点颜色

我正在使用NetworkX来分析和可视化社交网络.通常,网络内的节点具有与它们相关联的属性信息,例如划分.但是,我并不总是知道属性划分可能有多少选项.例如,有时可能只有3个分区表示为网络中的节点属性,有时可能有30个分区.

我已经弄清楚如何根据节点属性设置节点颜色(参见下面的代码).但是,在此示例中,我知道节点属性组(5个选项)的选项有多不同,并自动设置每种颜色.

当节点属性只有3或5个选项时,选择节点属性颜色并不困难,但是当有更多选项时,这变得不现实.

我想弄清楚的是如何根据提供的节点属性选项的数量自动选择最佳节点属性颜色.

有时候我有5个属性要着色的选项,有时我可能有30个选项让节点属性着色,我不想单独设置每个节点颜色.

我不确定这是否应该能够与colormap函数一起使用,或者如果仅通过数值度量(例如度中心度)用于颜色节点.

NETWORKX代码

import networkx as nx

pylab inline

# create an empty graph
g = nx.Graph()

# open csv edgelist and read edges into graph
for line in open('phils_network_edgelist.csv', 'rb'):
    edge = line.rstrip().split(',')
    g.add_edge(edge[0], edge[1])

# draw network without node color
nx.draw(g, with_labels=False, node_size=25)
Run Code Online (Sandbox Code Playgroud)

没有节点属性颜色的网络

# read in node attributes as list of tuples
group_attr = []
for line in open('phils_network_attribute_group.csv', 'rb'):
    group_attr.append(tuple(line.rstrip().split(',')))

# convert list of tuples into a dict
group_attr_dict = dict(set(sorted(group_attr))) …
Run Code Online (Sandbox Code Playgroud)

python matplotlib networkx

14
推荐指数
1
解决办法
2万
查看次数

在python中使用iGraph进行社区检测,并将每个节点的社区编号写入CSV

我有一个网络,我想使用edge_betweennessiGraph中的社区检测算法进行分析.我对NetworkX很熟悉,但我正在尝试学习iGraph,因为它是基于NetworkX的其他社区检测方法.

我的最终目标是运行edge_betweenness社区检测并找到最佳社区数,并为图中的每个节点编写具有社区成员资格的CSV.

以下是我目前的代码.任何帮助计算社区成员资格的人都非常感谢.

输入数据('network.txt'):

1 2
2 3
2 7
3 1
4 2
4 6
5 4
5 6
7 4
7 8
8 9
9 7
10 7
10 8
10 9
Run Code Online (Sandbox Code Playgroud)

iGraph代码

import igraph

# load data into a graph
g = igraph.Graph.Read_Ncol('network.txt')

# plot graph
igraph.plot(g)
Run Code Online (Sandbox Code Playgroud)

igraph.plot(克)

# identify communities
communities = igraph.community_edge_betweenness()

# not really sure what to do next
num_communities = communities.optimal_count
communities.as_clustering(num_communities)
Run Code Online (Sandbox Code Playgroud)

我需要做些什么才能找到最佳社区数量并写下图表中每个节点属于列表的社区?

python hierarchical-clustering igraph

12
推荐指数
1
解决办法
9618
查看次数

列表到词典:偶数项作为键,奇项作为值

我正在尝试使用Python将a转换list为a dictionary,我需要帮助提出一个简单的解决方案.我想要转换的列表如下所示:

inv = ['apples', 2, 'oranges', 3, 'limes', 10, 'bananas', 7, 'grapes', 4]
Run Code Online (Sandbox Code Playgroud)

我想创建一个dictionary从这里开始list,其中偶数位置的项目(苹果,橙子,酸橙,香蕉,葡萄)是keys,而奇数位置(2,3,10,7,4)中的项目是values.

inv_dict = {'apples':2, 'oranges':3, 'limes':10, 'bananas':7, 'grapes':4}
Run Code Online (Sandbox Code Playgroud)

我尝试使用类似于enumerate计算项目位置的东西,然后如果它是偶数,则将其设置为key.但后来我不确定如何将以下数字与正确的项目相匹配.

python dictionary list

7
推荐指数
1
解决办法
3032
查看次数

使用json.loads时的Python分段错误 - 将JSON加载到列表中的替代方法?

我试图将一些JSON Twitter数据加载到列表中,但我得到了segmemtation fault (core dumped).

虽然我很想升级我的记忆,但现在根本不是一个选择.我想知道是否有某种方法可以迭代这个列表而不是试图将其全部加载到内存中?或者也许有一种不同类型的解决方案可以让我将这个JSON数据加载到列表中?

In [1]: import json

In [2]: data = []

In [3]: for i in open('tweets.json'):
   ...:     try:
   ...:         data.append(json.loads(i))
   ...:     except:
   ...:         pass
   ...:     

Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

数据是在大约10天内使用Twitter Streaming API收集的,大小为213M.

机器规格:

  • Oracle VM虚拟盒
  • 操作系统:Ubuntu(64位)
  • 基本内存:1024 MB
  • 视频内存:128 MB
  • 存储(虚拟大小):8.00 GB动态分配

我正在使用iPython(版本2.7.6),并通过Linux终端窗口访问它.

python json

5
推荐指数
1
解决办法
1094
查看次数

Anaconda Navigator创造了新的环境,并没有出现

我刚下载了Anaconda,我在Windows上第一次使用Navigator.我已经通过命令行使用Conda一段时间了,所以我熟悉环境的概念以及如何使用它们.现在,导航器中出现的唯一环境是root.我想安装一些额外的软件包,所以我继续克隆了root环境.这不会导致任何错误,并且似乎有效,除了我没有看到我的新环境.

我知道环境已成功创建,因为当我通过Anaconda Prompt时我可以看到它们.

有什么想法为什么这不起作用?

anaconda

5
推荐指数
1
解决办法
1137
查看次数

查找数字与数字之间的可自定义距离

我有一个整数的排序列表,我发现想要查找此列表中的数字运行.我在寻找增加1的数字运行时看到了很多例子,但我也想查找数字运行,其中数字之间的差异是可自定义的.

例如,假设我有以下数字列表:

nums = [1, 2, 3, 6, 7, 8, 10, 12, 14, 18, 25, 28, 31, 39]
Run Code Online (Sandbox Code Playgroud)

使用此处的示例,我可以找到以下数字运行:

[[1, 2, 3], [6, 7, 8], [10], [12], [14], [18], [25], [28], [31], [39]]
Run Code Online (Sandbox Code Playgroud)

但是,我想查找数字运行,其中两个数字之间的差异可能不仅仅是1.例如,我希望所有数字运行的距离小于或等于2.

[[1, 2, 3], [6, 7, 8, 10, 12, 14], [18], [25], [28], [31], [39]] 
Run Code Online (Sandbox Code Playgroud)

或者我想要所有的数字运行距离小于或等于3.

[[1, 2, 3, 6, 7, 8, 10, 12, 14], [18], [25, 28, 31], [39]]
Run Code Online (Sandbox Code Playgroud)

这是我现在正在使用的函数,以获得距离为1的数字运行.

def runs(seq, n):
    result = []
    for s in seq:
        if not result or …
Run Code Online (Sandbox Code Playgroud)

python int list-comprehension list

5
推荐指数
1
解决办法
79
查看次数

在 ggplot 条形图中使 Y 轴从 1 而不是 0 开始

我有一些调查数据,其中人们回答了他们非常同意、同意、不同意、非常不同意不同陈述的程度。他们的回答可以是 1 到 4 之间的任何值(包括小数)(1 = 非常不同意,2 = 不同意,等等)。

我想通过在条形图中绘制每个变量的平均值来总结这些数据。我还想将 Y 轴标签更改为不是数值,但锚点处的标签 1 = 强烈不同意,2 = 不同意,等等...

鉴于下面包含的数据,我可以使用以下代码完成此操作:

ggplot(data = data, aes(x=factor(key), y=value, fill=key)) + 
  stat_summary(fun.y="mean", geom="bar", width = 0.5) +
  stat_summary(aes(label=round(..y..,1)), fun.y="mean", geom="text", vjust = -0.5) +
  geom_hline(yintercept = 3, linetype="solid", color = "red", size=1.5, alpha=0.25) +
  scale_y_discrete(limits=c("Strongly Disagree", "Disagree", "Agree", "Strongly Agree"))
Run Code Online (Sandbox Code Playgroud)

图表

这与我需要的很接近,但我真的想让 Y 轴从 1 = 强烈不同意而不是 0 开始。

我想我可以从所有数字响应中减去 1,但是我每个条的平均分数标签将是不正确的。

我唯一的限制是我ggplot希望在 . 我有另一个这样的图表,我曾经facet_wrap()在我的数据集中为每个组(不包括变量)创建相同的图表。

我已经做了很多搜索,但似乎ggplot通常不建议更改轴的起点。但是,鉴于这种情况,它认为这听起来可以接受。


data <- structure(list(key = structure(c(1L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

5
推荐指数
1
解决办法
4076
查看次数

geom_bar()使条形的宽度不同并且完全重叠

我有一些数据可以捕获多个时间段内两个不同组的百分比。

df <- structure(list(period = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 
3L, 4L, 5L), .Label = c("FY18 Q4", "FY19 Q1", "FY19 Q2", "FY19 Q3", 
"FY19 Q4"), class = "factor"), key = c("You", "You", "You", "You", "You", 
"Me", "Me", "Me", "Me", "Me"), value = c(0.707036316472114, 
0.650424585523655, 0.629362214199759, 0.634016393442623, 0.66578947368421, 
0.509574110529601, 0.505703612591682, 0.493109917284898, 0.497505296695832, 
0.523938932489946)), row.names = c(NA, -10L), class = c("tbl_df", 
"tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)

我想绘制此数据,以使一段时间内的两个条形图相互重叠,但是条形图的宽度不同。我希望“ Me”的标准是width=0.5“ You”的标准width=0.7。我还想包括一个说明每种颜色代表什么的图例。

如果要并排绘制条形图,可以使用position="dodge",如下所示:

library(ggplot2)
library(dplyr)

ggplot(data=df, aes(x=period, y=value, fill=key)) + …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 geom-bar

5
推荐指数
1
解决办法
60
查看次数

NetworkX - 创建属于4节点集团的所有节点的新图形

我有一个网络,我想受集团约束,但我还没有弄清楚如何正确地做到这一点.我能够使用k-cores执行相同的过程,但不确定创建仅包含clique的图形的正确过程.

我希望如果我使用该k_core函数显示我的查找子图的过程,有人可以帮助我改变我的过程以使用该clique函数查找子图.

首先,我创建一个图表,我将使用空手道俱乐部:

In [1]: import networkx as nx

In [2]: g = nx.karate_club_graph()
Run Code Online (Sandbox Code Playgroud)

在iPython中绘制图表:

In [3]: pylab inline
Populating the interactive namespace from numpy and matplotlib

In [4]: nx.draw(g)
Run Code Online (Sandbox Code Playgroud)

karate_club_graph

接下来,我找到4核内的所有边(有4个或更多边):

In [5]: g_4k_edges = nx.k_core(g, k=4).edges()
Run Code Online (Sandbox Code Playgroud)

将这些边添加到新图:

In [6]: g_4k = nx.Graph()
In [7]: g_4k.add_edges_from(g_4k_edges)
Run Code Online (Sandbox Code Playgroud)

绘制4核图:

In [8]: nx.draw(g_4k)
Run Code Online (Sandbox Code Playgroud)

空手道俱乐部图 -  4核

关于如何做到这一点的任何想法,但不是使用k核来绑定网络,而是使用具有4个或更多顶点的派系?

python clique networkx

4
推荐指数
1
解决办法
3311
查看次数

禁用 Apache Superset 中的加载示例

我已使用 Docker Compose 在本地安装了 Apache Superset。所有预加载的示例一开始都有帮助,但我想知道是否有一个配置设置可以跳过加载这些示例。我知道我可以单独删除每个示例图表和仪表板,但我希望有一个配置设置可以禁用加载示例。我已经查看了文档,但还没有看到这样的设置。

https://superset.apache.org/docs/installation/configuring-superset

apache-superset

4
推荐指数
1
解决办法
4310
查看次数