我的问题基本上与这个问题相同,但对于 matplotlib。我确定它与轴或子图有关,但我认为我没有完全理解这些范式(更全面的解释会很棒)。
当我遍历一组比较时,我希望将每个新图的基 y 值设置为略低于前一个图,以获得如下结果:
另一个(潜在的)问题是我在循环中生成这些图,所以我不一定知道一开始会有多少图。我认为这是我对子图/轴心存疑虑的事情之一,因为您似乎需要提前设置它们。
任何想法将不胜感激。
编辑:我认为我取得了一点进步:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
x = np.random.random(100)
y = np.random.random(100)
fig = plt.figure()
ax = fig.add_axes([1,1,1,1])
ax2 = fig.add_axes([1.02,.9,1,1])
ax.plot(x, color='red')
ax.fill_between([i for i in range(len(x))], 0, x, color='red', alpha=0.5)
ax2.plot(y, color='green')
ax2.fill_between([i for i in range(len(y))], 0, y, color='green', alpha=0.5)
Run Code Online (Sandbox Code Playgroud)
这接近我想要的......
我正在尝试编写一个python脚本,它将启动mongod,创建一个数据库(或打开我已经创建的数据库),添加一些信息,然后关闭mongod.
#!/usr/bin/env python
from pymongo import MongoClient
import subprocess
def create_mongo_database(database_name, path_to_database):
mongod = subprocess.Popen(
"mongod --dbpath {0}".format(path_to_database),
shell=True
)
client = MongoClient()
db = client[database_name]
collection = db['test_collection']
collection.insert_one({'something new':'some data'})
mongod.terminate()
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但是阅读python文档,他们说shell=True在子进程中使用是一个坏主意.我对这些东西很新手,而且我真的不明白shell=True旗帜在做什么,但我明白在输入变量时访问shell是不好的.问题是,当我尝试运行此删除shell=True参数时,我收到以下错误:
Traceback (most recent call last):
File "/Users/KBLaptop/computation/kvasir/mongo_test2.py", line 23, in <module>
create_mongo_database('test5_database', '~/computation/db')
File "/Users/KBLaptop/computation/kvasir/mongo_test2.py", line 12, in create_mongo_database
"mongod --dbpath {0}".format(path_to_database),
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 709, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1326, in _execute_child
raise child_exception
OSError: [Errno …Run Code Online (Sandbox Code Playgroud) 在学习了 python 后试图进入 Julia,我在一些看似简单的事情上绊倒了。我想要一个将字符串作为参数的函数,但使用这些参数之一作为正则表达式来搜索某些内容。所以:
function patterncount(string::ASCIIString, kmer::ASCIIString)
numpatterns = eachmatch(kmer, string, true)
count(numpatterns)
end
Run Code Online (Sandbox Code Playgroud)
这有几个问题。首先,eachmatch期望一个Regex对象作为第一个参数,我似乎无法弄清楚如何转换字符串。在python中我会做r"{0}".format(kmer)- 有没有类似的东西?
其次,我显然不明白该count函数是如何工作的(来自文档):
计数(p,itr)?整数
计算 itr 中谓词 p 返回 true 的元素数。
但是我似乎无法弄清楚仅计算迭代器中有多少事物的谓词是什么。我可以制作一个简单的计数器循环,但我认为它必须是内置的。我就是找不到它(尝试过文档,尝试过搜索......没有运气)。
编辑:我也试过numpatterns = eachmatch(r"$kmer", string, true)- 不行。
我已经使用以下groupby函数对DataFrame的子集进行了计算:
using RDatasets
iris = dataset("datasets", "iris")
describe(iris)
iris_grouped = groupby(iris,:Species)
iris_avg = map(:SepalLength => mean,iris_grouped::GroupedDataFrame)
Run Code Online (Sandbox Code Playgroud)
现在,我想绘制结果,但以下图出现错误消息:
@df iris_avg bar(:Species,:SepalLength)
Run Code Online (Sandbox Code Playgroud)
仅支持表
绘制数据的最佳方法是什么?我的想法是创建一个DataFrame并从那里开始。我将如何做,即如何将GroupedDataFrame转换为单个DataFrame?谢谢!
假设我有一个包含数万个条目的列表,我想将它们写入文件。如果列表中的项目符合某些条件,我想关闭当前文件并开始一个新文件。
我有几个问题,我认为它们源于这样一个事实,即我想根据该文件中的第一个条目命名文件。此外,启动新文件的信号基于条目是否具有与前一个相同的字段。因此,例如,假设我有以下列表:
l = [('name1', 10), ('name1', 30), ('name2', 5), ('name2', 7), ('name2', 3), ('name3', 10)]
Run Code Online (Sandbox Code Playgroud)
我想最终得到 3 个文件,name1.txt应该包含10and 30,name2.txt应该有5, 7and 3,并且name3.txt应该有10. 该列表已经按第一个元素排序,所以我需要做的就是检查第一个元素是否与前一个元素相同,如果不是,则开始一个新文件。
起初我试过:
name = None
for entry in l:
if entry[0] != name:
out_file.close()
name = entry[0]
out_file = open("{}.txt".format(name))
out_file.write("{}\n".format(entry[1]))
else:
out_file.write("{}\n".format(entry[1]))
out_file.close()
Run Code Online (Sandbox Code Playgroud)
据我所知,这有几个问题。首先,第一次通过循环,没有out_file关闭。其次,我不能关闭最后out_file创建的,因为它是在循环内定义的。以下解决了第一个问题,但看起来很笨重:
for entry in l:
if name:
if entry[0] != name:
out_file.close()
name = entry[0] …Run Code Online (Sandbox Code Playgroud)