小编dee*_*nes的帖子

如何在igraph中制作分组布局?

igraph应用模块化算法查找图形社区之后,我想绘制一个网络布局,清楚地显示不同的社区及其连接.类似于Cytoscape中的"组属性布局":我希望显示每个组/社区的成员彼此接近,并在组/社区之间保持一定距离.我无法找到igraph提供此功能的任何功能.在发布这个问题时,我已经找到了一个简单的diy解决方案,我将把它作为答案发布.但我想知道是否有更好的可能性,或更详细的解决方案?

r igraph

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

Python xlrd.Book:如何关闭文件?

我在一个循环中读取150个excel文件,打开它们xlrd.open_workbook(),返回一个Book对象.最后,当我尝试umount卷时,我无法使用,当我查看时lsof,我发现其中6个文件仍处于打开状态:

$ lsof | grep volumename

python2   32349         deeenes  mem       REG               0,40    138240     181517 /.../150119.xls
python2   32349         deeenes  mem       REG               0,40    135168     181482 /.../150609.xls
python2   32349         deeenes  mem       REG               0,40    140800     181495 /.../140828.xls
python2   32349         deeenes    5r      REG               0,40    140800     181495 /.../140828.xls
python2   32349         deeenes    6r      REG               0,40    135168     181482 /.../150609.xls
python2   32349         deeenes    7r      REG               0,40    138240     181517 /.../150119.xls
Run Code Online (Sandbox Code Playgroud)

这是我的函数我用以下内容读取xls文件:( 为了清晰起见而剥离)

import sys
import xlrd
from xlrd.biffh import XLRDError

def read_xls(xls_file, …
Run Code Online (Sandbox Code Playgroud)

python file-io xlrd

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

如何将参数传递给装饰器,在那里处理,并转发到装饰函数?

我最近决定学习Python装饰器,并遵循这个方法.特别是在"向装饰者传递参数"一节中的例子.我想要做的是(1)装饰器函数应该接受一些参数(decarg),(2)处理它们,以及(3)用参数调用装饰函数(funarg).我看到如何为装饰器提供参数,但我还没有看到任何示例,其中装饰函数的参数仅在装饰器中可用.当我调用装饰函数时,我完全不确定我应该做什么参数,因为它的参数是在装饰器函数中计算的.以下是基于提到的howto的示例:

def dec(decarg):
    def _dec(fun):
        funarg = decarg + 7
        def _fun(funarg):
            return fun(funarg)
        return _fun
    return _dec

def main(mainarg):
    decarg = mainarg + 2
    @dec(decarg)
    def fun1(funarg):
        return funarg + 3
    return fun1(decarg)

main(1)
Run Code Online (Sandbox Code Playgroud)

这将返回6,当我期望13.我希望参数增加2 main()和7 in _dec(),这应该将此变量传递给装饰函数,它将3添加到它.

之后,我读了这个这个 howtos,并使用他们的方法我创建了一个像我想象的那样工作的例子:

class dec(object):

    def __init__(self, fun):
        self.fun = fun

    def __call__(self, decarg):
        funarg = decarg + 7
        return self.fun(funarg)

def main(mainarg):
    decarg = mainarg + 2
    @dec
    def fun1(funarg):
        return funarg + 3 …
Run Code Online (Sandbox Code Playgroud)

python python-decorators

6
推荐指数
1
解决办法
3169
查看次数

Plotly python:力轴限制(范围)

plotly的文档说,通过参数range我们可以设置轴的限制,例如range = [0, 10]将轴最小值设置为0,最大值设置为10。根据文档,它可以在figure、layout、scene或xaxis下使用。事实上Scatter,andLayout接受xaxisyaxis参数,它们要么是字典,要么是plotly.graph_objs.XAxis对象,并且可以提供一个range值。然而,在尝试了我能想象到的所有变化后,它显然未能设定限制。此外,第一个子图似乎低于其他子图。请参阅下面的最小工作示例,它可以在任何 Jupyter 笔记本中运行。

额外问题:为什么fill参数 atScatter无法设置点的填充颜色?

import plotly
import plotly.tools
import plotly.graph_objs
plotly.offline.init_notebook_mode()

data = {
    'A': {
        'x': [1.0, 2.0, 6.0, 8.0],
        'y': [34.0, 36.0, 38.0, 40.0],
        's': [0.00416, 0.01125, 0.0038, 0.002]
    },
    'B': {
        'x': [1.0, 1.0, 2.0, 2.0, 1.0, 2.0, 3.0, 2.0, 2.0, 3.0,
            4.0, 2.0, 4.0, 5.0, 6.0, 7.0, 7.0],
        'y': [30.0, 32.0, …
Run Code Online (Sandbox Code Playgroud)

python plot plotly

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

ggplot geom_point:如何设置自定义绘图符号的字体?

随着ggplot::geom_point我们能够设置使用绘图符号的任意字符scale_shape_manual.我将举例说明目的:使用三角形在每个单元格中创建一个具有两个值的热图:

require(ggplot2)

data <- data.frame(
    val = rnorm(40),
    grp = c(rep('a', 20), rep('b', 20)),
    x   = rep(letters[1:4], 5),
    y   = rep(letters[1:5], 4)
)

p <- ggplot(data, aes(x = x, y = y, color = val, shape = grp)) +
    geom_point(size = 18) +
    scale_shape_manual(values=c("\u25E4","\u25E2")) +
    theme_minimal() +
    theme(panel.grid = element_blank())

ggsave('triangle-tiles.pdf', device = cairo_pdf, width = 4.1, height = 3.5)
Run Code Online (Sandbox Code Playgroud)

带有geom_point的三角形热图

如果用于符号的字体具有这些特殊字符,则此方法可以正常工作.否则显然是失败的.我知道我们可以明确地定义字体并获得相同的结果geom_text:

require(dplyr)

data <- data %>% mutate(sym = ifelse(grp == 'a', "\u25E4", "\u25E2"))

p …
Run Code Online (Sandbox Code Playgroud)

r heatmap ggplot2 gtable

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

Seaborn:如何设置条形边框的线宽或颜色?

我正在尝试绘制带有无边界条的条形图。默认情况下,条具有黑色细边框。在Seaborn的开发版本(0.6)中,我可以将kwargs(linewidthedgecolor)传递给pyplot.bar()via seaborn.barplot(),但是在当前版本(0.5.1)中,此功能似乎尚不可用。看着返回的AxesSubplot对象,尽管有很多方法,我找不到将线宽设置为零或将颜色设置为完全透明的方法,所以我仍然希望有一种方法可以实现这一点。

import matplotlib.pyplot as plt
import seaborn as sns

fig, ax = plt.subplots()
ax = sns.barplot(data = data, x = 'var1', color = '#007b7f')
fig.tight_layout()
fig.savefig('fig.pdf')
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib seaborn

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

Matplotlib 箱线图视觉样式:`whiskerprops` 不起作用

在 matplotlib 的文档中boxplot我们可以读到:

Whiskerprops : dict 或 None (默认)如果提供,将设置胡须的绘图样式

好的,所以我通过了一个指令来在胡须上设置一些视觉样式:

whiskerprops = {'ls': 'solid', 'lw': 0.5, 'color': '#777777'}
boxplot(..., whiskerprops = whiskerprops)
Run Code Online (Sandbox Code Playgroud)

除了 之外,这些设置没有任何影响color

在其他 prop 上也可以观察到相同的行为:cappropsmedianpropsboxprops等。

后来我找到了原因,我会在答案中发布。我这样做只是因为其他人可能面临同样的问题,并且文档和教程没有回答这个问题。

python matplotlib boxplot

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

ggplot2:像分类变量一样适合 geom_smooth() 是连续的

我在y上有一个连续变量,在x轴上有一个分类变量。在分类变量中,顺序是有道理的,按其索引拟合回归是有意义的,我的意思是不要c('a', 'b', 'c')使用索引 ( order(c('a', 'b', 'c')),即c(1, 2, 3)),并根据此拟合模型。但是,geom_smooth(method = lm)如果一个变量不是数字,ggplot 拒绝拟合 a 。好的,那么我可以告诉它使用顺序:

geom_smooth(aes(x = order(hgcc), y = rtmean), method = lm)
Run Code Online (Sandbox Code Playgroud)

但随后它从数据框中获取整列的索引scales = 'free',当x一个图上仅出现变量水平的一个子集时,这对于分面来说并不好。整个数据帧中的索引平均要高得多,所以回归将绘制在右边很远的地方:

回归向右推

这是一个最小的工作示例:

require(ggplot2)
load(url('http://www.ebi.ac.uk/~denes/54b510889336eb2591d8beff/sample_data.RData'))

ggplot(adata12cc, aes(x = hgcc, y = rtmean, color = cls, size = log10(intensity))) +
geom_point(stat = 'sum', alpha = 0.33) +
geom_smooth(
    aes(x = order(hgcc), y = rtmean),
    method = 'glm') +
facet_wrap( ~ uhgroup, scales …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

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