我正在制作一些互动图,我想添加一个颜色条图例.我不希望颜色条在它自己的轴上,所以我想将它添加到现有轴.我这样做有困难,因为我发现的大多数示例代码都为colorbar创建了一个新的轴.
我尝试使用下面的代码matplotlib.colorbar.ColorbarBase,它为现有的轴添加了一个颜色条,但它给了我奇怪的结果,我无法弄清楚如何指定颜色条的属性(例如,它放在轴上的位置和什么它的大小)
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.cm import coolwarm
import numpy as np
x = np.random.uniform(1, 10, 10)
y = np.random.uniform(1, 10, 10)
v = np.random.uniform(1, 10, 10)
fig, ax = plt.subplots()
s = ax.scatter(x, y, c=v, cmap=coolwarm)
matplotlib.colorbar.ColorbarBase(ax=ax, cmap=coolwarm, values=sorted(v),
orientation="horizontal")
Run Code Online (Sandbox Code Playgroud)
使用fig.colorbar而不是matplotlib.colorbar.ColorbarBase仍然没有给我我想要的东西,我仍然不知道如何调整颜色条的属性.
fig.colorbar(s, ax=ax, cax=ax)
Run Code Online (Sandbox Code Playgroud)
假设我想在左上角有颜色条,在图的顶部延伸大约一半.我该怎么做呢?
我最好为此编写一个自定义函数,也许使用LineCollection?
我可以使用以下命令返回最多2列
newiris<-iris %>%
rowwise() %>%
mutate(mak=max(Sepal.Width,Petal.Length))
Run Code Online (Sandbox Code Playgroud)
我想要做的是在一系列列中找到最大值,所以我不必像这样命名每一列
newiris<-iris %>%
rowwise() %>%
mutate(mak=max(Sepal.Width:Petal.Length))
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
将a转换float为a时str,我可以指定要显示的小数点数
'%.6f' % 0.1
> '0.100000'
'%.6f' % .12345678901234567890
> '0.123457'
Run Code Online (Sandbox Code Playgroud)
但是,当简单地调用str一个float在Python 2.7,它似乎默认为12小数点最多
str(0.1)
>'0.1'
str(.12345678901234567890)
>'0.123456789012'
Run Code Online (Sandbox Code Playgroud)
这个最大小数点数定义/记录在哪里?我能以编程方式获取此号码吗?
我知道你可以删除尾随和前导空格
gsub("^\\s+|\\s+$", "", x)
Run Code Online (Sandbox Code Playgroud)
你可以删除内部空间
gsub("\\s+"," ",x)
Run Code Online (Sandbox Code Playgroud)
我可以将它们组合成一个函数,但我想知道是否有办法只使用一个gsub函数
trim <- function (x) {
x <- gsub("^\\s+|\\s+$|", "", x)
gsub("\\s+", " ", x)
}
testString<- " This is a test. "
trim(testString)
Run Code Online (Sandbox Code Playgroud) 我想测试两个numpy数组是否(接近)相等,所以我一直在使用该np.allclose函数.唯一的问题是,True如果给定二维矩阵和相等元素的三维矩阵,则返回.
import numpy as np
x = np.array([[3.14159265, -0.1], [-0.1, 0.1]])
y = np.array([[math.pi, -0.1], [-0.1, 0.1]])
z1 = np.array([[[3.14159265, -0.1], [-0.1, 0.1]],
[[3.14159265, -0.1], [-0.1, 0.1]]])
z2 = np.array([[[math.pi, -0.1], [-0.1, 0.1]],
[[math.pi, -0.1], [-0.1, 0.1]]])
np.allclose(x,y)
# Returns true, as expected
np.allclose(x,z1)
# Also returns true, even though matrices are different shapes. Unwanted.
Run Code Online (Sandbox Code Playgroud)
现在,我知道np.array_equal,比较元素和形状,但它不允许我测试元素是否接近,只有它们是相等的.例如,
np.array_equal(x,y)
Run Code Online (Sandbox Code Playgroud)
返回 False
是否有一个我可以使用的函数将返回true (x,y),(z1,z2)但(x,z1)在这种情况下是false ?
我有当前最新版本的 iPython (7.6.1),当我尝试使用向上箭头键访问之前的命令时,当我点击多行命令时,向上箭头会慢慢向上穿过每一行,而不是转到上一个命令。要到达多行命令之前的命令,我必须一直滚动到多行命令的顶部,然后才能到达上一个命令。是否有另一种快捷方式可以用来跳过多行命令并获取上一个命令?
numpy是否有类似的函数np.put返回一个新数组而不是就地修改数组?像这样的东西:
def put_copy(arr, ind, v, mode="raise"):
arr_copy = arr.copy()
np.put(arr_copy, ind, v, mode)
return arr_copy
arr = np.arange(5)
print put_copy(arr, [0,2], [-44,-55])
# [-44 1 -55 3 4]
Run Code Online (Sandbox Code Playgroud) 我为一个蛋白质家族构建了一个系统发育树,可以将其分成不同的组,按照受体类型或反应类型对每个蛋白质进行分类.树中的节点被标记为受体类型.
在系统发育树中,我可以看到属于相同组或受体类型的蛋白质在同一分支中聚集在一起.所以我想折叠这些具有共同标签的分支,按给定的关键字列表对它们进行分组.
命令将是这样的:
./collapse_tree_by_label -f phylogenetic_tree.newick -l list_of_labels_to_collapse.txt -o collapsed_tree.eps(或pdf)
我的list_of_labels_to_collapse.txt将是这样的:A B C D
我的纽约树将是这样的:(A_1:0.05,A_2:0.03,A_3:0.2,A_4:0.1):0.9,(((B_1:0.05,B_2:0.02,B_3:0.04):0.6,(C_1:0.6) ,C_2:0.08):0.7):0.5,(D_1:0.3,D_2:0.4,D_3:0.5,D_4:0.7,D_5:0.4):1.2)
没有折叠的输出图像是这样的:http: //i.stack.imgur.com/pHkoQ.png
输出图像折叠应该是这样的(collapsed_tree.eps):http: //i.stack.imgur.com/TLXd0.png
三角形的宽度应表示分支长度,三角形的高度必须表示分支中的节点数.
我一直在玩R.中的"猿"包.我能够绘制一个系统发育树,但我仍然无法弄清楚如何通过标签中的关键字来折叠分支:
require("ape")
Run Code Online (Sandbox Code Playgroud)
这将加载树:
cat("((A_1:0.05,A_2:0.03,A_3:0.2,A_4:0.1):0.9,(((B_1:0.05,B_2:0.02,B_3:0.04):0.6,(C_1:0.6,C_2:0.08):0.7):0.5,(D_1:0.3,D_2:0.4,D_3:0.5,D_4:0.7,D_5:0.4):1.2):0.5);", file = "ex.tre", sep = "\n")
tree.test <- read.tree("ex.tre")
Run Code Online (Sandbox Code Playgroud)
这应该是崩溃的代码
这将绘制树:
plot(tree.test)
Run Code Online (Sandbox Code Playgroud) 假设我在文件中定义了一个类:
import stuff
import more stuff
import stuff that takes a long time to import
class Foo(object):
def __init__(self, arg1, arg2 etc.):
self.arg1 = arg1
self.arg2 = arg2
# Lots of other stuff
# Lots of methods
Run Code Online (Sandbox Code Playgroud)
在另一个文件中我有这个代码:
from big_file import Foo
def do_stuff(obj):
if isinstance(obj, Foo):
do_stuff
else:
do_other_stuff
Run Code Online (Sandbox Code Playgroud)
假设文件Foo需要很长时间才能导入,原因是我无法控制.如何重构此代码以不导入Foo但仍可靠地检查类型?我不认为鸭子打字适合我的特殊情况.
我应该检查obj基础的字符串表示吗?还是有另一种更规范的方式?
python ×6
r ×3
numpy ×2
ape-phylo ×1
arrays ×1
cython ×1
dplyr ×1
ipython ×1
matplotlib ×1
phylogeny ×1
plot ×1
python-2.6 ×1
regex ×1
string ×1
typechecking ×1