标签: backend

如何在matplotlib/Python中切换后端

我正在努力解决以下问题.我需要生成由一组图表组成的报告.除了一个之外,所有这些图表都是使用Matplotlib默认后端(TkAgg)制作的.需要使用开罗后端制作一张图表,原因是我正在绘制igraph图,并且只能使用Cairo绘制.

问题是我不能动态改变后端,例如以下方法不起作用:(
matplotlib.pyplot.switch_backend('cairo.png') 我知道switch_backend功能是实验性的)

我也尝试过,matplotlib.use("cairo.png")但这会导致导入问题,因为matplotlib.use("cairo.png")语句应该在导入之前出现matplotlib.pyplot.但是在剧本的生命历程中我需要两个不同的后端.

所以我的问题是有人有一个代码片段,显示如何在Matplotlib中切换后端?

非常感谢!

更新:我编写了一个加载matplotlib的片段,显示默认后端,卸载matplotlib,重新加载它并更改后端:

import matplotlib
import matplotlib.pyplot as plt
import sys
print matplotlib.pyplot.get_backend()

modules = []
for module in sys.modules:
    if module.startswith('matplotlib'):
        modules.append(module)

for module in modules:
    sys.modules.pop(module)

import matplotlib
matplotlib.use("cairo.png")
import matplotlib.pyplot as plt

print matplotlib.pyplot.get_backend()
Run Code Online (Sandbox Code Playgroud)

但这真的是这样做的吗?

更新2:我昨天有一些严重的大脑冻结......简单而明显的解决方案是将开罗后端用于所有图表而不是切换后端:)

更新3:实际上,它仍然是一个问题所以谁知道如何动态切换matplotlib后端....请发布你的答案.

python backend matplotlib cairo

68
推荐指数
8
解决办法
7万
查看次数

如何使用Python获取网站的屏幕截图/图像?

我想要实现的是从python中的任何网站获取网站截图.

环境:Linux

python webpage screenshot backend

53
推荐指数
8
解决办法
9万
查看次数

两个Rails应用程序之间的共享模型 - Workflow的理想解决方案是什么?

我目前正在开发一个Rails 3项目,该项目分为四个部分:

  • 面向公众的网站
  • 管理网站/后端
  • 模特
  • 用于第三方数据访问的API

由于模型在三个关键组件之间共享,我希望它们远离一个主项目,但是每个部分都需要访问模型,但我不想重复代码并且在任何地方都有不同的版本.

目前我在gem中有模型代码,在每个项目的Gemfile中我使用以下行引用它们:

gem "my_models", :path => "../my_models/"
Run Code Online (Sandbox Code Playgroud)

但是,当我部署到我们的测试服务器以供我的同事评估系统时,我需要从外部存储库中提取模型,因此我将以上行替换为以下内容:

gem "my_models", :git => "git@private.repository.com:username/my_models.git"
Run Code Online (Sandbox Code Playgroud)

这在它自身运行良好,但它在"版本"方面非常笨重(即我每次希望将更改部署到测试服务器时都需要碰撞版本),切换线路以使用git而不是本地,并确保我正确地推送文件.

以前我使用的是共享的git子模块,但这很尴尬.

我宁愿不把所有内容都构建成一个大型项目,因为这些项目往往变得怪异且难以维护,如果可能的话我也想分开关注点,因此我对管理站点所做的任何更改都没有太多有可能影响其他组件 - 显然这些模型有可能引发问题,但这是我已经考虑和理解的风险.

当涉及到这样的事情时,那里的人们会提出什么建议呢?或者,我是否完全采用了错误的方式?

一些额外的背景:

这个应用程序是对现有网站的重写,遵循"将所有内容整合到一个项目中"的模式 - 不幸的是,这里有两个问题:

  1. 该应用程序开发得很糟糕 - 我继承了这个项目,当我第一次拿起它时,每个页面的加载时间约为2分钟,只有一个用户 - 这已经减少但仍然存在问题
  2. 我们目前处于当前站点的容量限制,我们预计在未来6个月内我们将需要承担更多负载 - 然而使用"一体化"应用程序进行扩展意味着我们将在扩展时浪费资源网站的后端不需要它.

基本上我要分开两件事 - 前端(公共网站和API)和后端 - 我对软件开发的所有了解都告诉我,将所有这些结合在一起并不是一个理想的解决方案(过去的历史表明我认为,在确保前端性能方面,将这两者分开是一个很好的举措.

也许我需要从另一个角度来看这个 - 保持每个项目中的模型,而不是在项目之间共享它们,每个功能区域都有一个简化的功能子集(即后端需要知道谁创建了一个帖子,但是前端并不真正关心它,因此在阅读模型时省略了这种逻辑).

ruby-on-rails backend rails-models

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

如何在AngularJS中处理XML服务?

我的公司拥有数千个现有的xml Web服务,并开始为新项目采用AngularJs.

http://angularjs.org/上的教程专门使用json服务.看起来它们在控制器中进行服务调用,解析生成的JSON,并将生成的对象直接传递给视图.

我该怎么处理XML?我看到四个选项:

  1. 解析它并将DOM对象直接传递给UI(视图).

  2. 在服务器端围绕我的XML服务放置一个JSON包装器.

  3. 使用客户端的某个库将DOM对象转换为JSON,并在发出post/put请求时将其转换回来.

  4. 在客户端手动将DOM对象转换为JavaScript对象.

什么是正确的方法,为什么?

xml service backend angularjs

52
推荐指数
4
解决办法
8万
查看次数

不要在服务器端代码中使用System.out.println

我听说System.out.println用于记录目的是一种非常糟糕的做法,这可能会迫使服务器失败.

我不使用这种方法,但我非常有兴趣知道为什么System.out.println在后端代码中使用时会产生垃圾.

java logging backend

50
推荐指数
4
解决办法
2万
查看次数

matplotlib后端 - 我在乎吗?

>>> import matplotlib
>>> print matplotlib.rcsetup.all_backends
[u'GTK', u'GTKAgg', u'GTKCairo', u'MacOSX', u'Qt4Agg', u'Qt5Agg', u'TkAgg', u'WX', u'WXAgg', u'CocoaAgg', u'GTK3Cairo', u'GTK3Agg', u'WebAgg', u'nbAgg', u'agg', u'cairo', u'emf', u'gdk', u'pdf', u'pgf', u'ps', u'svg', u'template']
Run Code Online (Sandbox Code Playgroud)

看看所有这些后端!

我需要关心使用哪个后端吗?例如,如果我仅使用TkAgg后端开发和测试我的东西,并且其他人使用我的代码可能GTKAgg在他们的系统上使用后端,那么我的东西可能以我不会注意到的方式为他们打破 - 或者所有后端都需要更多或者更少"工作"同样的方式?

python backend matplotlib

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

什么是与AngularJS一起使用的好后端

我想知道你对AngularJS作为前端使用的好后端的建议.

为什么你建议的后端好,易于使用或易于学习?

frontend backend angularjs

46
推荐指数
4
解决办法
8万
查看次数

如何在Django框架中使用Cassandra

有没有强大的方法将Cassandra后端实现到使用Django Web框架开发的Web应用程序?

django backend cassandra

45
推荐指数
4
解决办法
2万
查看次数

如何使用Keras切换后端(从TensorFlow切换到Theano)

我试图用Keras切换Backend(从TensorFlow切换到Theano)但是没有管理.我按照这里描述的临时措施,但它不起作用.我在keras的目录中创建了一个keras.json(因为它不存在)但是当我从Python导入它时它没有改变任何东西.

backend theano keras

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

Matplotlib和Pyplot.close()没有释放内存? - 后端相关的Qt4Agg

编辑:如果我明确地将matplotlib的后端从'Qt4Agg'更改为'Agg',那么我能够运行我的代码而没有错误.我认为这是后端的一个错误?

我正在编写一些代码来自动处理相当大量的数据.代码首先解析我的数据文件并存储所有相关的位.然后,我有不同的功能来生成我需要的每个图形(总共大约有25个).但是,我一直遇到某种内存错误,我认为这是因为Matplotlib/PyPlot没有正确释放内存.

每个绘图函数都以pyplot.close(fig)命令结束,因为我只想保存图形而不立即查看它们,所以它们包含pyplot.show().

如果我在翻译中单独运行绘图功能,那么我不会遇到任何问题.但是,如果我创建一个单独调用每个绘图函数的函数,那么我会遇到"MemoryError:无法为路径分配内存".

有人遇到过这样的问题吗?在绘制循环时,似乎与Matplotlib内存不足有关,但pyplot.close()无法解决我的问题.

这是我的代码中典型的绘图函数:

def TypicalPlot(self, title=None, comment=False, save=False, show=True):

    if title is None:
        title = self.dat.title

    fig = plt.figure()
    host = SubplotHost(fig, 111)
    fig.add_subplot(host)
    par = host.twinx()
    host.set_xlabel("Time (hrs)")
    host.set_ylabel("Power (W)")
    par.set_ylabel("Temperature (C)")
    p1, = host.plot(self.dat.timebase1, self.dat.pwr, 'b,', label="Power",
                    markevery= self.skip)
    p2, = par.plot(self.dat.timebase2, self.dat.Temp1, 'r,', 
                   label="Temp 1", markevery= self.skip)
    p3, = par.plot(self.dat.timebase2, self.dat.Temp2, 'g,', 
                   label="Temp 2", markevery= self.skip)
    p4, = par.plot(self.dat.timebase2, self.dat.Temp3, 'm,', 
                   label="Temp 3", markevery= self.skip)
    host.axis["left"].label.set_color(p1.get_color())
    # …
Run Code Online (Sandbox Code Playgroud)

python memory backend matplotlib

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