小编Bor*_*lik的帖子

与ggplot2 geom_violin非常奇怪的图表

我只能用一个非常大的数据集可靠地重建这个问题,所以我将整个代码粘贴到pastebin 这里是没有数据部分的代码:

    # read tmp from the pastebin  

library(ggplot2)
plt <- ggplot(tmp, aes(region, score))
plt1 <- plt + geom_violin(aes(region, score), scale='width', trim=F)  + ylim(0, 1) + ggtitle('with ylim')
plt2 <- plt + geom_violin(aes(region, score), scale='width', trim=F)  + ggtitle('without ylim')
Run Code Online (Sandbox Code Playgroud)

设置此图的y限制会产生相当难看的"小提琴":

在此输入图像描述

在此输入图像描述

这是什么,为什么会发生这种情况以及如何避免这个丑陋的问题呢?

BTW,设置trim=T解决了问题.

r ggplot2

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

numpy.arrays中的字符串预分配

>>> import numpy as np
>>> a = np.array(['zero', 'one', 'two', 'three'])
>>> a[1] = 'thirteen'
>>> print a
['zero' 'thirt' 'two' 'three']
>>>
Run Code Online (Sandbox Code Playgroud)

如您所见,第二个元素已被截断为原始数组中的最大字符数.

有可能解决这个问题吗?

python numpy

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

扩展python中的元组

在以下代码中:

a = 'a'
tup = ('tu', 'p')
b = 'b'
print 'a: %s, t[0]: %s, t[1]: %s, b:%s'%(a, tup[0], tup[1], b)
Run Code Online (Sandbox Code Playgroud)

我如何"扩展"(无法找出更好的动词),tup以便我不必明确列出其所有元素?

注意我不想打印tup本身,但它的个别元素.换句话说,以下代码不是我正在寻找的

>>> print 'a: %s, tup: %s, b: %s' % (a, tup, b)
a: a, tup: ('tu', 'p'), b: b
Run Code Online (Sandbox Code Playgroud)

上面的代码已打印tup,但我想独立打印它的元素,元素之间有一些文字.

以下不起作用:

print 'a: %s, t[0]: %s, t[1]: %s, b:%s'%(a, tup, b)
In [114]: print '%s, %s, %s, %s'%(a, tup, b)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

TypeError: not …
Run Code Online (Sandbox Code Playgroud)

python tuples

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

在matplotlib中正确对齐标签

我不喜欢Y轴的垂直标签.因此,我倾向于:

plt.ylabel('horizontal label', 
      rotation=0)
Run Code Online (Sandbox Code Playgroud)

这导致一个很好的标签:

单行标签

但是,如果所需标签包含多行,则结果不是最理想的:

plt.ylabel('horizontal\nmultiline label', 
     rotation=0, ha='right')
Run Code Online (Sandbox Code Playgroud)

多行标签

改为ha='left'不做正确的工作

坏对齐

有没有一种简单的方法来实现这一目标:

在此输入图像描述

python matplotlib

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

Why can't I override `to_dict` method of a `dataclass` object that uses `dataclasses_json`?

dataclasses_json is a library that provides JSON capabilities to python's data classes. I noticed that overriding to_dict method has no effect. Here's an example:

@dataclass_json
@dataclass
class Message2:
    message: str
    weight: int
    def to_dict(self, encode_json=False):
        print('Custom to_dict')
        ret = {'MESSAGE': self.message, 'WEIGHT': self.weight}
        return ret
m2 = Message2('m2', 2)
print(m2.to_dict())
Run Code Online (Sandbox Code Playgroud)

The code prints the following:

{'message': 'm2', 'weight': 2}

While I was expecting

Custom to_dict
{'MESSAGE': 'm2', 'WEIGHT': 2}
Run Code Online (Sandbox Code Playgroud)

If I remove the @dataclass_json line, I get the desired output. …

python python-decorators python-dataclasses

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

指定在许多功能结束时要执行的操作

我有一个python对象,其中一堆函数需要在执行结束时执行相同的操作,就在return语句之前.例如:

def MyClass(object):
    def __init__(self):
        pass

    def update_everything(self):
        '''update everything'''
        pass

    def f1(self):
        #do stuff
        self.update_everything()
        return result

    def f2(self):
        #do stuff
        self.update_everything()
        return result

    def f3(self):
        #do stuff
        self.update_everything()
        return result
Run Code Online (Sandbox Code Playgroud)

除了每个函数末尾的显式调用之外,最好的(pythonic?)方法是什么?

python oop

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

将neo4j查询结果加载到python的`igraph`图中

如何将Cypher查询的结果加载到igraphpython中,保留所有边缘和顶点属性?

python igraph neo4j cypher

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

Perl如何决定将标量视为字符串或数字?

请考虑以下代码及其输出:

#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my $HOURS_PER_DAY = 24.0 * 1.0;
my $BSA = 1.7 * 1.0;
my $MCG_PER_MG = 1000.0 * 1.0;
my $HOURS_DURATION    = 20.0 * $HOURS_PER_DAY;
my $dummy = $HOURS_PER_DAY * $BSA * $MCG_PER_MG * $HOURS_DURATION;
print Dumper($HOURS_PER_DAY);
print Dumper( $BSA);
print Dumper( $MCG_PER_MG);
print Dumper( $HOURS_DURATION );
Run Code Online (Sandbox Code Playgroud)

产量

$VAR1 = 24;
$VAR1 = '1.7';
$VAR1 = 1000;
$VAR1 = 480;
Run Code Online (Sandbox Code Playgroud)

如您所见,第二个变量被视为字符串,而第一个和第四个变量被视为数字.任何人都知道底层逻辑是什么?

编辑添加的算术计算并不能完全解决问题(参见$ BSA变量).


$ perl -v

This is perl, v5.10.0 built for …
Run Code Online (Sandbox Code Playgroud)

string perl scalar numbers

0
推荐指数
3
解决办法
4754
查看次数