我一直在看Matplotlib库中的示例"scatter hist".
目前,x/y子图分别位于顶部和右侧,即:
divider = make_axes_locatable(axScatter)
axHistx = divider.append_axes("top", 1.2, pad=0.1, sharex=axScatter)
axHisty = divider.append_axes("right", 1.2, pad=0.1, sharey=axScatter)
Run Code Online (Sandbox Code Playgroud)
但是,如果我将子图位置更改为:
divider = make_axes_locatable(axScatter)
axHistx = divider.append_axes("bottom", 1.2, pad=0.1, sharex=axScatter)
axHisty = divider.append_axes("right", 1.2, pad=0.1, sharey=axScatter)
Run Code Online (Sandbox Code Playgroud)
即将x子面板移动到底部,然后append_axes将y子图添加到x子图的右侧,而不是散点图的右侧.(我上传图片,但我还没有足够的声誉发布图片...... grrr)!
如何告诉append_axes我想将y子图附加到包含散点图的"主轴"的右侧?我猜我需要在某处再次指定对象axScatter(虽然我认为这divider = make_axes_locatable(axScatter)是为了什么?!)或者我猜测分隔符在窗口面板中设置了一个网格我需要告诉append_axes哪个单元格包含主轴.
谢谢,
亚历克斯
我试图制作一个包含7个子图的情节.目前我正在绘制两个列,一个有四个图,另一个有三个,就像这样:
我正在按照以下方式构建这个情节:
#! /usr/bin/env python
import numpy as plotting
import matplotlib
from pylab import *
x = np.random.rand(20)
y = np.random.rand(20)
fig = figure(figsize=(6.5,12))
subplots_adjust(wspace=0.2,hspace=0.2)
iplot = 420
for i in range(7):
iplot += 1
ax = fig.add_subplot(iplot)
ax.plot(x,y,'ko')
ax.set_xlabel("x")
ax.set_ylabel("y")
savefig("subplots_example.png",bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)
但是,对于发布我认为这看起来有点难看 - 我想要做的是将最后一个子图移动到两列之间的中心.那么,调整最后一个子图的位置以使其居中的最佳方法是什么?即,在3X2网格中有前6个子图,下面的最后一个子图在两列之间居中.如果可能的话,我希望能够保持for循环,以便我可以简单地使用:
if i == 6:
# do something to reposition/centre this plot
Run Code Online (Sandbox Code Playgroud)
谢谢,
亚历克斯
我正在尝试构建一个模块文件,并且我想包含一个 if 语句来检查是否已经设置了某些环境变量(例如 PATH、LD_LIBRAY_PATH、PYTHON_PATH...)。
我尝试了几种不同的语法选项(在此处搜索、官方文档和其他论坛之后)但是当我尝试时:
module use modulefiles
module load mymodule
Run Code Online (Sandbox Code Playgroud)
我不断收到ERROR:102: Tcl command execution failed错误。以下是我尝试过的一些选项:
一世)
set myTools /path/to/my/Tools
if { info exists $LD_LIBRARY_PATH } {
setenv LD_LIBRARY_PATH $myTools/lib:$myTool/lib64:$LD_LIBRARY_PATH
} else {
setenv LD_LIBRARY_PATH $myTools/lib:$myTools/lib64
}
Run Code Online (Sandbox Code Playgroud)
ii)
set myTools /path/to/my/Tools
if { [info exists $LD_LIBRARY_PATH] } {
setenv LD_LIBRARY_PATH $myTools/lib:$myTool/lib64:$LD_LIBRARY_PATH
} else {
setenv LD_LIBRARY_PATH $myTools/lib:$myTools/lib64
}
Run Code Online (Sandbox Code Playgroud)
三)
set myTools /path/to/my/Tools
if { $?LD_LIBRARY_PATH } {
setenv LD_LIBRARY_PATH $myTools/lib:$myTool/lib64:$LD_LIBRARY_PATH
} else {
setenv LD_LIBRARY_PATH $myTools/lib:$myTools/lib64
}
Run Code Online (Sandbox Code Playgroud)
检查可能已经设置的环境变量是否存在的正确语法是什么,例如在 …
我有一个 HEALPix 地图,我已经使用healpy阅读过它,但是它是在银河坐标中,我需要它在天球/赤道坐标中。有人知道转换地图的简单方法吗?
我尝试使用healpy.Rotator从 (l,b) 转换为 (phi,theta),然后使用healpy.ang2pix对像素重新排序,但地图看起来仍然很奇怪。
如果有一个类似于Rotator您可以调用的函数,那就太好了map = AnotherRotator(map,coord=['G','C']):有人知道有这样的功能吗?
谢谢,
亚历克斯
我正在看matplotlib画廊中的自定义投影示例 - 我正在尝试修改它以仅绘制南半球.我已将必要的[-pi/2,pi/2]限制调整为[-pi/2,0].现在我一直在看:
def _gen_axes_patch(self):
"""
Override this method to define the shape that is used for the
background of the plot. It should be a subclass of Patch.
In this case, it is a Circle (that may be warped by the axes
transform into an ellipse). Any data and gridlines will be
clipped to this shape.
"""
#return Circle((0.5, 0.5), 0.5)
return Wedge((0.5,0.5), 0.5, 180, 360)
def _gen_axes_spines(self):
return {'custom_hammer':mspines.Spine.circular_spine(self,
(0.5, 0.5), 0.25)}
Run Code Online (Sandbox Code Playgroud)
如您所见,我用Wedge替换了Circle补丁.这就是投影图目前的样子:

脊柱仍然遵循圆/椭圆 - 我如何指定我希望脊椎遵循楔形的边界? …
我经常希望从Python内部执行Unix命令,但我最近发现找不到某些命令.一个例子是'limit'命令:
$ echo $SHELL
/bin/tcsh
$ limit vmemoryuse 1000m
$ python
Python 2.7.3 (default, Aug 3 2012, 20:09:51)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system("echo $SHELL")
/bin/tcsh
0
>>> os.system("limit vmemoryuse 1000m")
sh: limit: command not found
32512
>>>
Run Code Online (Sandbox Code Playgroud)
另一个例子是'setenv'命令.为什么这些命令在Python中不起作用?我尝试过使用'os'和'subprocess'模块但没有成功.有没有人知道允许我从Python内部成功调用这些命令的另一个模块或方法?