绘制一个集团图
import networkx as nx
....
nx.draw(G, layout=nx.spring_layout(G))
Run Code Online (Sandbox Code Playgroud)
产生如下图:

显然,需要增加节点之间的间隔(例如,边缘长度).我用谷歌搜索了这个,并在这里找到了这个建议:
对于某些布局算法,存在可能有帮助的"缩放"参数.例如
在1中:将networkx导入为nx
在2:G = nx.path_graph(4)
在[3]中:pos = nx.spring_layout(G)#default to scale = 1
在[4]中:nx.draw(G,pos)
在[5]中:pos = nx.spring_layout(G,scale = 2)#所有节点之间的双倍距离
在[6]中:nx.draw(G,pos)
但是,该scale参数似乎没有任何影响.
获得更好绘图的正确方法是什么?
numpy.cos()在特定数字上(例如24000.0),其工作时间延长了30%。加一个小增量(+0.01)可使numpy.cos()照常工作。
我不知道为什么。
在与一起工作时,我偶然发现了一个奇怪的问题numpy。我正在检查缓存工作,并意外制作了错误的图形- numpy.cos(X)时间取决于时间X。这是我修改后的代码(从我的Jupyter笔记本复制):
import numpy as np
import timeit
st = 'import numpy as np'
cmp = []
cmp_list = []
left = 0
right = 50000
step = 1000
# Loop for additional average smoothing
for _ in range(10):
cmp_list = []
# Calculate np.cos depending on its argument
for i in range(left, right, step):
s=(timeit.timeit('np.cos({})'.format(i), number=15000, setup=st))
cmp_list.append(int(s*1000)/1000)
cmp.append(cmp_list)
# Calculate average times
av=[np.average([cmp[i][j] for i in range(len(cmp))]) …Run Code Online (Sandbox Code Playgroud) 我试图在python中使用networkx将相邻矩阵转换为图形。我的“加权”图大约有8000个节点和14000条边。是否有很棒的布局图或其他软件包,工具可以使我的图变得更漂亮?我希望结果是边缘权重越高,节点越近。这样我就可以分析群集节点。
我已经尝试了networkx文档中提供的所有布局。我也尝试使用gephi,但仍然对我的理想不满意。这是在networkx中的外观。它可以显示所有群集,但是对于患有强烈恐惧症的人来说,这看起来有点可怕:
这是我用来绘制图形的代码:
G = nx.Graph()
for i in range(10000):
for j in range(10000):
if mat[i][j] > 10:
G.add_edge(a[i], a[j], weight=mat[i][j])
pos = nx.nx_pydot.graphviz_layout(G)
plt.figure(figsize=(8, 8))
plt.axis('off')
nx.draw_networkx(G, pos=pos, with_labels=False, node_size=25, edgecolors='black', edge_color='b')
plt.show()
Run Code Online (Sandbox Code Playgroud) 我正在寻找使用 numpy 网格创建等高线图的最佳方法。
我的列中有 Excel 数据,简单如下所示:
x data values: -3, -2, -1, 0, 1, 2 ,3, -3, -2, -1, 0, 1, 2, 3
y data values: 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2
z data values: 7 , 5, 6, 5, 1, 0, 9, 5, 3, 8, 3, 1, 0, 4
Run Code Online (Sandbox Code Playgroud)
x 和 y 值定义一个 2d 平面,其长度(x 轴)为 7 个值,深度(y 轴)为 2 个值。z 值定义相应点(或多或少是 z 轴)处的颜色。
我试过了:
import matplotlib.pyplot as plt
import numpy …Run Code Online (Sandbox Code Playgroud) TLDR: is-comparison 适用于 Python bool,不适用于 numpy bool_。是否存在其他差异?
几天前,我遇到了布尔人的一种奇怪行为。当我尝试对这个 numpy 数组使用 is-comparison 时:
arr1 = np.array([1,0,2,0], dtype=bool)
arr1
Out[...]: array([ True, False, True, False])
Run Code Online (Sandbox Code Playgroud)
(这些变量名是虚构的,与真实变量名或生产代码的任何相似之处纯属巧合)
我看到了这个结果:
arr1 is True
Out[...]: False
Run Code Online (Sandbox Code Playgroud)
这是合乎逻辑的,因为arr1它不是 True 或 False,它是 numpy 数组。我检查了这个:
arr1 == True
Out[...]: array([ True, False, True, False])
Run Code Online (Sandbox Code Playgroud)
这按预期工作。我提到了这个可爱的行为并立即忘记了它。第二天,我检查了数组元素的真实性:
[elem is False for elem in arr1]
它返回给我这个!
Out[...]: [False, False, False, False]
我真的很困惑,因为我记得在 Python 数组中(我认为问题出在数组行为中):
arr2 = [True, False, True, False]
[elem is False for elem in arr2]
Run Code Online (Sandbox Code Playgroud)
有用: …
我试图从以下文本中获取IP:Port:
{
"supportsHttps": true,
"protocol": "http",
"ip": "149.28.159.132",
"port": "8080",
"get": true,
"post": true,
"cookies": true,
"referer": true,
"user-agent": true,
"anonymityLevel": 1,
"websites": {
"example": true,
"google": true,
"amazon": false,
"yelp": false,
"google_maps": false
},
"country": "US",
"unixTimestampMs": 1558097368515,
"tsChecked": 1558097368,
"unixTimestamp": 1558097368,
"curl": "http://149.28.159.132:8080",
"ipPort": "149.28.159.132:8080",
"type": "http",
"speed": 89.52,
"otherProtocols": {},
"verifiedSecondsAgo": 1249
}
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码:
def gimmeproxy():
r=requests.get("https://gimmeproxy.com/api/getProxy?api_key=45785302-3264-4694-99e1-7c6628c90e6c&get=true&country=US&protocol=http&supportsHttps=true&user-agent=true&websites=google&anonymityLevel=1")
contents=str(r.content)
content=contents.split(',')
IP=content[20]
print(IP)
#IP=IP.replace(':','')
IP = IP.replace('"', '')
IP = IP.replace(',', '')
IP = IP.replace("\n", "")
IP = IP.replace('ipPort', …Run Code Online (Sandbox Code Playgroud) 我有一个存储在 NumPy 数组中的 0 到 1 之间的概率列表。如何隐藏这些值,以便任何 >0.5 的值都变为 1,任何 <0.5 的值都变为 0?
我所拥有的基本上是:
model = [0.123,0.789,0.456,0.654]
Run Code Online (Sandbox Code Playgroud)
我想要的是:
model = [0,1,0,1]
Run Code Online (Sandbox Code Playgroud)
这只是将整个数组更改为 1s,我也尝试过
我尝试过使用循环来做到这一点:
for i in range(len(model)):
if i<0.5:
model[i]=0
elif i>0.5:
model[i]=1
Run Code Online (Sandbox Code Playgroud)
这只是将整个数组更改为 1s,我也尝试过
i = 0
while i <len(model):
if model[i] < 0.5:
model[i] = 0
i + 1
elif model[i] >0.5:
model[i] = 1
i + 1
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
我读过 stackoverflow 问题,解决方案似乎是插入完整路径,但是这样做后它给了我名称错误。我正在使用 Windows 10 python 3.7.1
这是我的代码:
from sklearn.tree import export_graphviz
export_graphviz(
tree_clf,
out_file = image_path("C:/Users/my_name/Desktop/iris_tree.dot"),# path where you want it to output
feature_names=iris.feature_names[2:],
class_names = iris.target_names,
rounded=True,
filled=True
)
Run Code Online (Sandbox Code Playgroud) 所以我是一个初学者,但我想可视化用户在 Python 中使用 networkx 的提及。我已经使用 Twitter API 收集了我想要查看的所有推文,并将它们放入数据框架中。数据框包含有关推文的各种数据,但我最感兴趣的是用户(DF 中的 5 个用户)以及用户的推文中提到了谁。
+-------+---------------------+
|user |mentioned_user |
+-------+---------------------+
|user1 |jack,peter,anne |
|user2 |sophie |
|user2 |anne,user1 |
+-------+---------------------+
Run Code Online (Sandbox Code Playgroud)
我意识到我可以使用 from_pandas_edgelist 提取我需要的数据,如下所示:
test = nx.from_pandas_edgelist(
df,
source='user',
target='mentioned_user',
edge_attr=True,
create_using=nx.DiGraph()
)
Run Code Online (Sandbox Code Playgroud)
但接下来我该怎么办?我想为每个用户绘制一个图,其中 user 和 said_user 是节点。
任何帮助是极大的赞赏!
我有一个包含 3 列的数据框:f1、f2 和分数。我想绘制一个图形(使用 NetworkX)来显示节点(在 f1 和 f2 中)和边缘值作为“分数”。我能够用节点及其名称绘制图形。但是,我无法显示边缘分数。有人可以帮忙吗?
这是我到目前为止:
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
feature_1 = ['Boston', 'Boston', 'Chicago', 'ATX', 'NYC']
feature_2 = ['LA', 'SFO', 'LA', 'ATX', 'NJ']
score = ['1.00', '0.83', '0.34', '0.98', '0.89']
df = pd.DataFrame({'f1': feature_1, 'f2': feature_2, 'score': score})
print(df)
G = nx.from_pandas_edgelist(df=df, source='feature_1', target='feature_2', edge_attr='score')
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)
#nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)
plt.show()
Run Code Online (Sandbox Code Playgroud) python ×10
networkx ×4
numpy ×4
benchmarking ×1
graph ×1
matplotlib ×1
pandas ×1
replace ×1
scikit-learn ×1
strip ×1
twitter ×1