小编bho*_*ard的帖子

使用matplotlib的savefig保存从python pandas生成的图(AxesSubPlot)

我正在使用pandas从数据框生成一个图,我想将其保存到文件中:

dtf = pd.DataFrame.from_records(d,columns=h)
fig = plt.figure()
ax = dtf2.plot()
ax = fig.add_subplot(ax)
fig.savefig('~/Documents/output.png')
Run Code Online (Sandbox Code Playgroud)

似乎最后一行,使用matplotlib的savefig,应该可以解决问题.但该代码产生以下错误:

Traceback (most recent call last):
  File "./testgraph.py", line 76, in <module>
    ax = fig.add_subplot(ax)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 890, in add_subplot
    assert(a.get_figure() is self)
AssertionError
Run Code Online (Sandbox Code Playgroud)

或者,尝试直接在绘图上调用savefig也会出错:

dtf2.plot().savefig('~/Documents/output.png')


  File "./testgraph.py", line 79, in <module>
    dtf2.plot().savefig('~/Documents/output.png')
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
Run Code Online (Sandbox Code Playgroud)

我想我需要以某种方式将plot()返回的子图添加到图中以便使用savefig.我也想知道如果这或许与该做魔术的AxesSubPlot类的后面.

编辑:

以下作品(没有提出任何错误),但留下了一个空白页面图像....

fig = plt.figure()
dtf2.plot()
fig.savefig('output.png')
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

50
推荐指数
5
解决办法
7万
查看次数

sqlalchemy flask:AttributeError:'Session'对象在session.commit()上没有属性'_model_changes'

我已经看到了SessionMaker的很多问题,但是这个问题略有不同.不知道为什么,但sqlalchemy不会让我的会话对象提交.

在我的应用程序中,我有一些代码可以:

views.py

rec = session.query(Records).filter(Records.id==r).first()
n = rec.checkoutRecord(current_user.id)
session.add(n)
session.commit()
Run Code Online (Sandbox Code Playgroud)

models.py:

class Records(UserMixin, CRUDMixin, Base):
    __table__ = Table('main_records', Base.metadata, autoload=True)


    def checkoutRecord(self,uid):
        self.editing_uid = uid 
        self.date_out = datetime.now()
        return self

    def checkinRecord(self,uid):
        self.editing_uid = uid 
        self.date_in = datetime.now()
        return self
Run Code Online (Sandbox Code Playgroud)

该程序在commit()上解决,给出了上述异常.有趣的是,一些测试代码不导入烧瓶,但导入sqlalchemy工作正常,让我提交没有错误.

完整的堆栈跟踪:

Traceback (most recent call last):
  File "/Users/bhoward/Envs/py27/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/bhoward/Envs/py27/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/bhoward/Envs/py27/lib/python2.7/site-packages/flask_login.py", line 663, in decorated_view
    return func(*args, **kwargs)
  File "/Users/bhoward/projects/PeerCoUI/mk2/peercoui/app/records/views.py", line 65, in select_view …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

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

Postgres:使用ARRAY_AGG和HAVING(而不是WHERE)过滤结果

所以我的数据库包含一个项目列表:

items:  item.id | item.title
Run Code Online (Sandbox Code Playgroud)

我有一个第二个表,它将许多标签与项目相关联:

tags:  tag.id | item.id
Run Code Online (Sandbox Code Playgroud)

项可以具有与其相关联的若干标签(例如,5,20和25),因此对于标签表中的每个标签值将具有行.

我希望能够确定特定标记是否与项目相关联,而不会丢失所有其他标记数据.例如,

SELECT items.id, items.title
FROM items
INNER JOIN tags ON (tag.tag_id=items.id)
WHERE tag.id =27
Run Code Online (Sandbox Code Playgroud)

不起作用,因为它消除了包含其他标记值的行(如果tag.id为27,则它不能是特定行上的任何其他值).

为了解决这个问题,我想使用ARRAY_AGG将单个标签号码汇总到一个数组中,我可以(应该)轻松测试成员资格的值.

SELECT items.id, items.title
FROM items
INNER JOIN tags ON (tag.tag_id=items.id)
GROUP BY items.id
HAVING ANY(ARRAY_AGG(tags.tag_id)=27)
Run Code Online (Sandbox Code Playgroud)

(我看到这篇文章关于你如何不能用ARRAY_AGG选择一个AS命名列)

但是上面的代码在HAVING子句的ANY部分产生语法错误.

思考?

sql postgresql

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

使用repo/git下载后,有效更改android存储库版本的最佳方法

我有一种情况需要构建一组不同版本的Android源代码的静态副本.

简单地做一个repo init -b $version; repo sync将永远init需要(需要交互,并且同步将浪费我的跨版本带宽).

我目前的设置是下载一个基本版本(比如1.6_r1),将其复制到一个新文件夹(android-1.6_r2),然后重新运行init并同步(repo init -b android-1.6_r2; repo sync).有时同步失败,错误如下:

ndk/build/platforms/android-3/arch-arm/usr/incl
中止
同步工作树:100%(153/153),完成.

错误:开发/:平台/开发结账caf83cb2b0ffde1a4cfb7cb258cbe012e283d9e1在android-2.1_r2.1s上重新同步返回FAIL

我发现一些有类似错误的帖子表明这可能是因为repo与文件系统中的"已更改"文件不同步,但我想知道我的错误是否是由repo的鼻子下更改版本引起的.

这是更改存储库版本的正确方法吗?更一般地说,是否有时间/带宽有效的方式将android-1.6_r1存储库转换为android-1.6_r2

git android repository android-manifest android-source

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

Android repo init - 如何以非交互方式运行(或没有名称/电子邮件提示)

我正在构建一个脚本,可以下载几个版本的Android.我不想从头开始拉动每个存储库,而是希望保留一个基本存储库,我可以在同步之前将其重新初始化为正确的版本(然后将结果复制到安全目录中).

但是,repo init始终会提示输入名称和电子邮件地址,从而挫败我的脚本尝试.我查看了repo源并尝试了像-q这样的选项,但似乎提示来自底层的git命令.

关于在没有交互的情况下进行repo init -b的任何建议?

git android repository android-source

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

validate_on_submit始终使用Flask WTForms返回false

我有一个简单的无线电字段,它总是导致validate_on_submit返回false.当我打印form.errors时,看起来"无效的选择"作为无线电字段中的值传递,尽管coerce = int.

我不认为我正在破坏表格中返回的任何东西,我希望以正确的方式创造动态选择.我不明白为什么会失败.

以下是我的项目的相关部分 - 任何建议表示赞赏.

forms.py:

class SelectRecord(Form):
    rid = RadioField("Record Select", choices=[], coerce=int,validators=[InputRequired()])
Run Code Online (Sandbox Code Playgroud)

views.py:

@mod.route('/select/', methods=('GET', 'POST'))
@login_required
def select_view():
    form = SelectRecord(request.form)
    if form.validate_on_submit():
        rid = form.data.rid
        if form['btn'] == "checkout":
            # check out the requested record
            Records.checkoutRecord(rid)
            return render_template('/records/edit.html',rid=rid)
        elif form['btn'] == "checkin":
            Records.checkinRecord(rid)
            flash("Record checked in.")
    else:
        mychoices = []
        recs_co = session.query(Records.id).filter(Records.editing_uid == current_user.id).  \
            filter(Records.locked == True)
        for x in recs_co:
            mychoices.append((x.rid,"%s: %s (%s)" % (x.a, x.b, x.c, x.d)))
        x = getNextRecord() …
Run Code Online (Sandbox Code Playgroud)

python flask wtforms flask-sqlalchemy flask-wtforms

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