我正在努力解决以下问题.我需要生成由一组图表组成的报告.除了一个之外,所有这些图表都是使用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后端....请发布你的答案.
我注意到一个反复出现的问题是:"什么是语言X的良好网络图库".我和很多图书馆一起玩过,我可以与你分享我的经历.
Python: NetworkX是一个强大的库,它具有内置的可视化功能,但也有一个使用pyGraphviz的Graphviz接口.(pyGraphviz和NetworkX由同一作者撰写).NetworkX是开源的,非常容易使用.
Perl: 开发Circos可视化基因组和其他高度复杂的数据集.它将始终使用圆形布局,但如果您的网络非常大并且其"模块化"分数较低,则它通常是最合适的布局.Circos是开源的.
.Net: NodeXL由Microsoft Research开发,既是Excel的附加组件,也是.Net 3.5库的附加组件.它非常开放(对于微软的标准)并使用Fruchterman-Reingold算法进行可视化.
Java: JUNG2最近发布,也是一个强大的库.具有扩展的可视化和关键指标支持.JUNG2是开源的.
UbiGraph: UbiGraph具有与不同语言的接口,包括Python(和NetworkX具有UbiGraph支持),Ruby,PHP,Java,C,C++,C#,Haskell和OCaml.它使用XML-RPC服务器对网络图进行非常简洁的三维可视化.基本版本是免费的,您必须支付专业版.
独立: 您可以随时使用的现成的货架包,如:Graphviz的(赢,Linux和OSX),Pajek(胜),UCINET(胜),甚至Visio中(胜).
我相信还有更多的软件包,但这些是我自己使用的软件包.还有哪些其他库或包?
我试图让Oauth使用Python使用Google API.我尝试了不同的oauth库,如oauth,oauth2和djanog-oauth,但我无法使其工作(包括提供的示例).
为了调试Oauth,我使用了Google的Oauth Playground,我研究了API和Oauth文档
对于一些库我正在努力获得正确的签名,与其他库我正在努力将请求令牌转换为授权令牌.如果有人可以使用上述库之一向我展示Google API的工作示例,那将对我有什么帮助.
编辑:我的初步问题没有得到任何答案,所以我添加了我的代码.导致此代码无效的原因有两种:
1)Google未授权我的请求令牌,但不太确定如何检测此
签名2)访问令牌的签名无效但我想了解哪些oauth参数Google因为我能够在第一阶段产生适当的签名.
这是使用oauth2.py和Django编写的,因此是HttpResponseRedirect.
REQUEST_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetRequestToken'
AUTHORIZATION_URL = 'https://www.google.com/accounts/OAuthAuthorizeToken'
ACCESS_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetAccessToken'
CALLBACK = 'http://localhost:8000/mappr/mappr/oauth/' #will become real server when deployed
OAUTH_CONSUMER_KEY = 'anonymous'
OAUTH_CONSUMER_SECRET = 'anonymous'
signature_method = oauth.SignatureMethod_HMAC_SHA1()
consumer = oauth.Consumer(key=OAUTH_CONSUMER_KEY, secret=OAUTH_CONSUMER_SECRET)
client = oauth.Client(consumer)
request_token = oauth.Token('','') #hackish way to be able to access the token in different functions, I know this is bad, but I just want it …Run Code Online (Sandbox Code Playgroud) 编写单元测试以查看模块是否正确安装的pythonic方法是什么?通过正确安装我的意思是,它不会引发ImportError:没有名为foo的模块.
我正在使用Hadoop Map Reduce来研究维基百科数据转储(以bz2格式压缩).由于这些转储太大(5T),我无法将xml数据解压缩为HDFS,只使用hadoop提供的StreamXmlRecordReader.Hadoop确实支持解压缩bz2文件,但它会任意拆分页面并将它们发送到映射器.因为这是xml,我们需要将分割作为标记.反正有没有使用内置的bz2解压缩和hadoop提供的流xml记录阅读器?
我对C相当陌生,我不明白为什么以下两个语句不能产生相同的结果:
char *fields[14] = {NULL};
const int num_fields = 14;
char *fields[num_fields] = {NULL};
Run Code Online (Sandbox Code Playgroud)
选项1有效,但选项2无效。它说“可变大小的对象可能未初始化”,并给出警告“警告:数组初始化器中的多余元素”。我在OSX上使用gcc 4.2.1。
感谢您分享您的想法!
python ×3
django ×2
backend ×1
bzip2 ×1
c ×1
cairo ×1
google-api ×1
graph ×1
graph-theory ×1
hadoop ×1
matplotlib ×1
oauth ×1
streaming ×1
unit-testing ×1
wikipedia ×1
xml ×1