我在matplotlib中的轴对象上绘制了一个图例,但声称将其置于智能位置的默认定位似乎不起作用.理想情况下,我希望用户可以拖动图例.如何才能做到这一点?
我可以访问图形实例fig = pylab.gcf().我知道在这个图中有一个传说,我可以通过它访问它myLegend = fig.gca().legend_.现在我想更改图例的属性.其中一些我可以通过设置者访问myLegend.set_frame_on(True).
创建图例时,它接受许多关键字参数:
class matplotlib.legend.Legend(parent,handles,labels,loc = None,numpoints = None,markerscale = None,scatterpoints = None,scatteryoffsets = None,prop = None,fontsize = None,borderpad = None,labelspacing = None,handlelength = None,handlehepad = None,handletextpad = None,borderaxespad = None,columnspacing = None,ncol = 1,mode = None,fancybox = None,shadow = None,title = None,framealpha = None,bbox_to_anchor = None,bbox_transform = None ,frameon = None,handler_map = None)
创建图例后,如何修改图例中的所有关键字参数?
其中一个有问题的是numpoints(图例中的标记数量,默认值为2).以下是我想要更改它的示例:
这显示了我想如何编程
import pylab
pylab.plot(0,0,'ro', label = 'one point')
pylab.legend(loc = "lower …Run Code Online (Sandbox Code Playgroud) 我正在测试/搜索我的图像处理算法的测试,我多次遇到"lena.png".为什么?它是某种标准算法测试图片吗?我想知道图片背后的历史.
我可以使用其他类似的照片吗?为什么?

如何为 pgm 纯 ascii 格式(P2)编写 python 成像库的过滤器。这里的问题是基本的 PIL 过滤器假设每个像素的字节数恒定。
我的目标是用 Image.open() 打开fep.pgm。请参阅http://netpbm.sourceforge.net/doc/pgm.html或以下。
替代解决方案是我找到了 PIL 和所有主要图形程序支持的其他有据可查的 ascii 灰度格式。有什么建议?
费用.pgm:
P2
# feep.pgm
24 7
15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0
0 3 0 0 0 0 …Run Code Online (Sandbox Code Playgroud) 如何保护我的变量免受此类攻击:
MyClass.__dict__ = {}
MyClass.__dict__.__setitem__('_MyClass__protectedVariable','...but it is not')
Run Code Online (Sandbox Code Playgroud)
上面改变了变量字典,之后是孩子们玩改变所有变量.上线对于此工作至关重要.如果您的字典__setitem__被调整如下,则上述方法无效.
我想强制用户使用我的方法setProtectedVariable(value)来更改变量,但我似乎没有办法在Python 2.7中这样做.有任何想法吗?
如果您从下面的代码中找到其他类似的漏洞,我也很感激(我注意到我还应该在我的inspect.stack办理登机手续中添加文件名和行号myDict.__setitem__).
这是我到目前为止所尝试的:
import inspect
class ProtectionTest:
__myPrivate = 0
def __init__(self):
md = myDict()
setattr(self,'__dict__', md)
def __setattr__(self, name, val):
if name == '__myPrivate':
print "failed setattr attempt: __myPrivate"
pass
elif name == '_ProtectionTest__myPrivate':
print "failed setattr attempt: _ProtectionTest__myPrivate"
pass
elif name == '__dict__':
print "failed setattr attempt: __dict__"
pass
else:
self.__dict__[name] = val
def getMyPrivate(self):
return self.__myPrivate
def setMyPrivate(self, myPrivate): …Run Code Online (Sandbox Code Playgroud) 很久以前我看到一个函数,它在 matplotlib 中将所有文本大小更改为相同。现在我在任何地方都找不到。这是一个简单的一(或两个)班轮,如:
for item in pylab.gca(): item.getLabel().setSize(10)
Run Code Online (Sandbox Code Playgroud)
我该怎么做?上面只是伪代码,但想法是改变 x 和 y 标签,图例,标题,一切。
编辑: ...在一个人物(对象)内。我希望文本大小取决于图形宽度。全局 font.size 会为所有数字更改此设置吗?并且我认为它不能动态应用(仅在创建图形之前读取设置)?
编辑 2:我测试了该font.size = 22方法。如果你在例如legend() 之后运行它,它会有一些奇怪的行为。文本垂直空间不会更新。因此,它应该类似于 getText().setTextSize()。
我必须从没有通用逻辑的文件名中解析一些数字.我想使用python的方式"尝试,你将被宽恕",或尝试 - 除了结构.现在我要添加两个以上的案例.这样做的正确方法是什么?我现在想要嵌套尝试或尝试 - 除了传递,尝试 - 除 - 传递,...哪一个会更好还是别的什么?工厂方法也许(如何?)?
这将在未来很容易扩展,因为会有更多的情况.
下面是我想要的(不起作用,因为每次尝试只能存在一个exeption):
try:
# first try
imNo = int(imBN.split('S0001')[-1].replace('.tif',''))
except:
# second try
imNo = int(imBN.split('S0001')[-1].replace('.tiff',''))
except:
# final try
imNo = int(imBN.split('_0_')[-1].replace('.tif',''))
Run Code Online (Sandbox Code Playgroud)
编辑:
哇,谢谢你的回答,但没有模式匹配请.我的坏,在开始时加上"一些共同的逻辑"(现在改为"没有共同的逻辑",对此抱歉).在上面的情况下,模式非常相似......让我添加一些完全不同的东西来说明问题.
except:
if imBN.find('first') > 0: imNo = 1
if imBN.find('second') > 0: imNo = 2
if imBN.find('third') > 0: imNo = 3
...
Run Code Online (Sandbox Code Playgroud) 我有一个大型捆绑软件发行版的糟糕Makefile.在某些时候,编译器总是"忘记"我想在32位程序中编译.这导致部分程序具有64位库,而其他程序具有32位库.
每次运行gcc时如何强制使用-m32选项?
br,
Juha
PS我的环境混合32/64位(macbook5.1,雪豹).或者:如何使我的系统纯粹为32位或64位?
编辑:强调覆盖全局变量的不良Makefile.这就是为什么我选择了有效的黑客行为.