问题描述
我稍微调整了这个答案的代码(见下文).但是,当在Linux上运行此脚本时(所以命令行:) python script_name.py,它将打印jobs running: x所有作业,但之后似乎只是卡住了.但是,当我使用spawn方法(mp.set_start_method('spawn'))时,它运行正常,并立即开始打印counter变量的值(请参阅listener方法).
题
fork?(因为它可能更快)码
import io
import csv
import multiprocessing as mp
NEWLINE = '\n'
def file_searcher(file_path):
parsed_file = csv.DictReader(io.open(file_path, 'r', encoding='utf-8'), delimiter='\t')
manager = mp.Manager()
q = manager.Queue()
pool = mp.Pool(mp.cpu_count())
# put listener to work first
watcher = pool.apply_async(listener, (q,))
jobs = []
for row in parsed_file:
print('jobs running: ' + str(len(jobs) + 1))
job = pool.apply_async(worker, (row, q)) …Run Code Online (Sandbox Code Playgroud) 问题描述
我有数千行(~4000)要绘制。然而,绘制所有线条是不可行的geom_line(),仅使用例如alpha=0.1来说明哪里有高密度的线,哪里没有。我在 Python 中遇到了类似的东西,尤其是答案的第二个图看起来非常好,但是如果可以在ggplot2. 因此是这样的:

一个示例数据集
用一组显示模式来证明这一点会更有意义,但现在我只是生成随机正弦曲线:
set.seed(1)
gen.dat <- function(key) {
c <- sample(seq(0.1,1, by = 0.1), 1)
time <- seq(c*pi,length.out=100)
val <- sin(time)
time = 1:100
data.frame(time,val,key)
}
dat <- lapply(seq(1,10000), gen.dat) %>% bind_rows()
Run Code Online (Sandbox Code Playgroud)
尝试过热图
我尝试了一个像这里回答的热图,但是这个热图不会考虑整个轴上点的连接(比如在一条线上),而是显示每个时间点的“热量” 。
问题
我们如何在 R 中使用ggplot2类似于第一张图所示的线绘制热图?
我想制作一个图表,其中不同的链接类别有不同的颜色,我用它作为输入(样本):
source target cat weight
<fctr> <fctr> <chr> <dbl>
1 human water 1 30
2 human water 2 49
3 human water 3 2
4 human water 4 14
5 human water 5 19
Run Code Online (Sandbox Code Playgroud)
然后我将这些数据转换为节点,链接和link.colors并绘制它,这将给出:

正如您在此网络中看到的,链接是相互叠加的.因此,不可能看到差异.所以我想绘制彼此相邻的链接,而不是相互叠加.
我无法提供整个数据集,但我想一个简单的例子就足够了:
library(networkD3)
link <- read.table(text = ' source target value
1 0 1 30
2 0 1 49', header = T)
nodes <- read.table(text = ' name group size
1 human 1 10
2 water 1 10', header = T)
link.colors <- c('#e6194b','#3cb44b')
network …Run Code Online (Sandbox Code Playgroud) 数据
让我们采用以下二维数组:
starts = [0, 4, 10, 13, 23, 27]
ends = [4, 10, 13, 23, 27, 32]
lengths = [4, 6, 3, 10, 4, 5]
arr = np.array([starts, ends, lengths]).T
Run Code Online (Sandbox Code Playgroud)
因此看起来像:
[[ 0 4 4]
[ 4 10 6]
[10 13 3]
[13 23 10]
[23 27 4]
[27 32 5]]
Run Code Online (Sandbox Code Playgroud)
目标
现在我想“循环”通过lengthsand 一旦累积和达到10我想输出startsandends然后重新启动累积计数。
工作代码
tot_size = 0
start = 0
for i, numb in enumerate(arr[:,-1]):
# update sum
tot_size += …Run Code Online (Sandbox Code Playgroud) 我读了这些问题:
但是我仍然无法将csv文件转换为JSON的层次结构.我在stackoverflow上找到的脚本特定于某个问题.假设有三个变量需要分组:
condition target sub
oxygen tree G1
oxygen tree G2
water car G3
water tree GZ
fire car GTD
oxygen bomb GYYS
Run Code Online (Sandbox Code Playgroud)
这将导致像这样的JSON文件(据我所知):
oxygen
- tree
- G1
- G2
- bomb
-GYYS
water
- car
- G3
- tree
-GZ
fire
- car
- GTD
Run Code Online (Sandbox Code Playgroud)
这些必须分组为嵌套结构,如:
{
"name": "oxygen",
"children": [
{
"name": "tree",
"children": [
{"name": "G1"},
{"name": "G2"},
{"name": "GYYS"}
]
},
{
"name": "bomb",
"children": [
{"name": "GYYS"}
] …Run Code Online (Sandbox Code Playgroud) 数据
我有以下(简化的)数据集,我们df从现在开始调用:
species rank value
1 Pseudomonas putida family Pseudomonadaceae
2 Pseudomonas aeruginosa family Pseudomonadaceae
3 Enterobacter xiangfangensis family Enterobacteriaceae
4 Salmonella enterica family Enterobacteriaceae
5 Klebsiella pneumoniae family Enterobacteriaceae
6 Pseudomonas putida genus Pseudomonas
7 Pseudomonas aeruginosa genus Pseudomonas
8 Enterobacter xiangfangensis genus Enterobacter
9 Salmonella enterica genus Salmonella
10 Klebsiella pneumoniae genus Klebsiella
11 Pseudomonas putida species Pseudomonas putida
12 Pseudomonas aeruginosa species Pseudomonas aeruginosa
13 Enterobacter xiangfangensis species Enterobacter hormaechei
14 Salmonella enterica species Salmonella …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
library(networkD3)
# Load data
data(MisLinks)
data(MisNodes)
new.nodes <- MisNodes
new.nodes$var1 <- runif(nrow(MisNodes),1,2)
new.nodes$var2 <- runif(nrow(MisNodes),1,2)
# Some script to show the node index in the new.nodes data frame
script <- 'alert("row: " + (d.index + 1));'
# Plot
forceNetwork(Links = MisLinks, Nodes = new.nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8,
clickAction = script)
Run Code Online (Sandbox Code Playgroud)
我想通了通过询问来获取节点数据帧的行号d.index + 1。但是我想显示一个包含所有节点信息的表,如下所示(也许格式更好):
name group size var1 var2
1 Myriel 1 15 …Run Code Online (Sandbox Code Playgroud) 我在其他编程语言(ruby、C++、JS 等)中发现了许多类似的问题,但在 Python 中却没有。因为Python有例如itertools我想知道我们是否可以在Python中更优雅地做同样的事情。
假设我们有一个“完整范围”,[1,100]然后是“完整范围”内/匹配“完整范围”的范围子集:
[10,50][90,100][1,9]在本例中,我们如何提取未覆盖的位置[51,89]?
这是一个玩具示例,在我的真实数据集中,范围高达数千。