小编Dav*_*ave的帖子

在matplotlib图中隐藏轴文本

我试图在任一轴上绘制一个没有刻度线或数字的图形(我使用传统意义上的轴,而不是matplotlib命名法!).我遇到的一个问题是matplotlib通过减去值N来调整x(y)ticklabels,然后在轴的末尾添加N.

这可能是模糊的,但下面的简化示例突出了问题,'6.18'是N的违规值:

import matplotlib.pyplot as plt
import random
prefix = 6.18

rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')

frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
    xlabel_i.set_visible(False)
    xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
    xlabel_i.set_fontsize(0.0)
    xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
    tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
    tick.set_visible(False)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我想知道的三件事是:

  1. 如何首先关闭这种行为(虽然在大多数情况下它是有用的,但并不总是!)我已经查看了matplotlib.axis.XAxis,找不到任何合适的东西

  2. 怎么能让N消失(即X.set_visible(False))

  3. 还有更好的方法来完成上述任务吗?我的最终情节将是图中的4x4子图,如果这是相关的.

python plot matplotlib

330
推荐指数
8
解决办法
37万
查看次数

如何转换(或缩放)轴值并重新定义matplotlib中的滴答频率?

我正在显示一个jpg图像(我将其旋转90度,如果这是相关的),当然轴显示像素坐标.我想转换轴,以便不显示像素数,而是显示我选择的单位 - 无论是弧度,度数,还是我的天文坐标.我知道从像素到(例如)度的转换.以下是我的代码目前的代码片段:

import matplotlib.pyplot as plt 
import Image
import matplotlib
thumb = Image.open(self.image)
thumb = thumb.rotate(90)
dpi = plt.rcParams['figure.dpi']
figsize = thumb.size[0]/dpi, thumb.size[1]/dpi
fig = plt.figure(figsize=figsize)
plt.imshow(thumb, origin='lower',aspect='equal')
plt.show()
Run Code Online (Sandbox Code Playgroud)

...所以继续这个,我可以取matplotlib在轴上打印的每个值,并用字符串更改/替换它来输出吗?我想为特定的坐标格式做这个 - 例如,而不是10.44(度)的角度,我希望它读取10 26'24''(即,度,arcmins,arcsecs)

最后在这个主题上,我想要在情节上控制嘀嗒频率.Matplotlib可能每隔50个像素打印一次轴值,但我真的想要每个(例如)度数.

听起来我想要定义某种类型的数组,其中包含我想要显示的像素值及其转换值(度等),可以在xmin/xmax范围内控制采样频率.

Stack Overflow上有matplotlib专家吗?如果是这样,非常感谢您的帮助!为了使这个学习体验更加丰富,我真的很感激在这种matplotlib问题的教程方向上受到了推动.我发现自己对轴,轴,人物,艺术家等感到非常困惑!

干杯,

戴夫

python matplotlib

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

matplotlib交互模式:确定是否仍然显示数字窗口

我在交互模式下使用matplotlib向用户显示一个帮助他们输入一系列变量的图.他们可以选择点击"?" 显示此图,然后将重复提示变量.

如果它仍在显示,我怎么知道不重新绘制这个图?

从表面上看,我有这个笨重的(伪ish)代码:

answer = None
done_plot = False
while answer == None:
    answer = get_answer()
    if answer == '?':
        if done_plot:
            have_closed = True
            ##user's already requested a plot - has s/he closed it?
            ## some check here needed:
            have_closed = ?????

            if have_closed == False:
                print 'You already have the plot on display, will not re-draw'
                answer = None
                continue
        plt.ion()
        fig = plt.figure()
        ### plotting stuff
        done_plot = True
        answer = None
    else:
        ###have an answer …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

LaTeX:引用,但不要参考

我在LaTeX中生成一组文档,我想为整个集合提供一个单一的全局参考书目页面.这是因为每个文档都是页面限制的:我不想占用每个文档底部的引用空间.

这意味着在每种情况下,我想在文中引用,但最后不会产生引用.我正在使用bibtex/natbib来处理引用.

最简单的例子:

\documentclass[]{article}
\bibliographystyle{/usr/share/texmf/bibtex/bst/natbib/plainnat.bst}
\usepackage{natbib}
\begin{document}
In \citet*{MEF2010} I described the method.
\bibliography{bibliography.bib}
\end{document}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?基本上我只是想让它正确引用:

In Bloggs, Blagg and Blog (2010) I described the method.
Run Code Online (Sandbox Code Playgroud)

但最后不要添加引用部分.有任何想法吗?

谢谢,

大卫

latex bibtex bibliography

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

返回两个numpy数组之间的公共元素索引

我有两个数组,a1和a2.假设len(a2) >> len(a1),a1是a2的子集.

我想快速返回a1中所有元素的a2索引.这种时间密集的方式显然是:

from operator import indexOf
indices = []
for i in a1:
    indices.append(indexOf(a2,i))
Run Code Online (Sandbox Code Playgroud)

这当然需要很长时间,其中a2很大.我也可以使用numpy.where()(尽管a1中的每个条目在a2中只出现一次),但我不相信它会更快.我也可以只遍历一次大阵列:

for i in xrange(len(a2)):
    if a2[i] in a1:
        indices.append(i)
Run Code Online (Sandbox Code Playgroud)

但我确信有一种更快,更"笨拙"的方式 - 我查看了numpy方法列表,但找不到合适的东西.

提前谢谢了,

d

python arrays numpy

12
推荐指数
1
解决办法
7192
查看次数

matplotlib hexbin中的零值颜色

我有一些空间分布的数据.我正在绘制它,matplotlib.pyplot.hexbin并希望更改"背景"(即零值)颜色.下面显示了一个示例 - 我选择的颜色图是matplotlib.cm.jet:

示例数据

如何将基色从蓝色更改为白色?我在使用时已经使用了蒙面数组做了类似的事情pcolormesh,但我无法在hexbin参数中看到这样做.我的直觉是编辑colourmap本身,但我没有太多经验.

我正在使用matplotlib v.0.99.1.1

python plot matplotlib

12
推荐指数
1
解决办法
4645
查看次数

在集市合并两个结账

我刚刚开始讨论集市,我发现结账功能对我的工作方式最有用 - 即我可以从"主副本"中进行c/o,进行一些开发然后将我的更改提交到新目录.然后,这将更新"主副本".

但是如果我正在研究(例如)两个项目,改变代码的不同部分呢?说:

~/master                - master copy
bzr co master ./gui
bzr co master ./engine
Run Code Online (Sandbox Code Playgroud)

所以我在./gui目录中执行gui相关的东西,在./engine中使用底层内容.我应该如何兑现我的更改?如果我首先使用gui,然后是引擎,我想任何冲突都会在引擎中被标记出来?

有没有办法合并gui和引擎,然后只做一次提交到主副本?

为了使事情变得更复杂,如果我这样做怎么样:

bzr branch gui ./mouse
Run Code Online (Sandbox Code Playgroud)

现在我也许我一直在研究鼠标,但也在gui上.如果我想合并来自gui和鼠标的代码,然后提交到master,那么管理它的最佳方法是什么?或者,如果我也:

bzr branch gui ./keyboard
Run Code Online (Sandbox Code Playgroud)

如果我改变了gui,键盘和鼠标,我应该分层合并 - 即鼠标+键盘,然后将其与gui合并,然后将gui提交给master?

我希望很清楚我正在努力实现的目标!在此先感谢您的时间.

merge bazaar checkout

5
推荐指数
1
解决办法
793
查看次数

Python类中的字母顺序功能

警告,这是一个纯粹的懒惰查询!随着我的项目的发展,一个类中的函数数量也在增加.我还有每个.py文件的一些类.所以我想做的是重新排序它们的功能名称是有组织的[对不起,英国在这里,我已经在Alphabetizing中以'z'进行了大量的妥协;-)]按字母顺序排列.

例如,目前:

class myClass():
    stuff
    def __init__():
        do stuff
    def b():
        also do stuff
    def c():
        do other stuff
    def a():
        do even more stuff
Run Code Online (Sandbox Code Playgroud)

..为了便于查找,我想重新安排到:

class myClass():
    stuff
    def __init__():
        do stuff
    def a():
        do even more stuff         
    def b():
        also do stuff
    def c():
        do other stuff
Run Code Online (Sandbox Code Playgroud)

纯粹出于美观的原因,因为它使搜索相关功能更加直观.我显然希望将init()等保持在类的顶部.

现在,我可以(但还没有)使用python脚本执行此操作,该脚本将.py类作为文本文件驻留在.py中,并执行大量的字符串操作.但我想知道有更好的方法吗?也许有一个我可以在某处使用的工具?我有一次很好的打猎,但我找不到任何可以使用的东西.

我正在使用emacs,所以也许有一个很大的5分钟组合序列可以完成魔术(例如),但我在python模式下看不到任何东西!

最后,我想要一些方法来可视化和宣传类结构/文档字符串.

当我说可视化结构时,我的意思是,例如,myClass.a()调用myOtherClass.g(),这将是一个链接,所以我能够看到什么调用什么,或者在逐类class basis(即myClass使用什么函数/类?)或整体(这里是一堆文件,它们如何'连接'?)

当我说宣传类,我想我的意思是像你看到的API文档EG1,EG2.

python visualization class publishing alphabetized

5
推荐指数
1
解决办法
1104
查看次数

要附加到列表的Python日志记录处理程序

这个(未答复的)问题有点类似:

/sf/ask/2319547891/

我希望使用一个处理程序简单地附加任何东西(传递过滤器)到python列表.我会设想这样的代码:

import logging
import sys
mylog = logging.getLogger()
mylog.setLevel(logging.DEBUG)

log_list = []
lh = logging.SomeHandler(log_list)
lh.setLevel(logging.DEBUG)

mylog.addHandler(lh)
mylog.warning('argh')
print log_list[0]
Run Code Online (Sandbox Code Playgroud)

因此问题是 - 我该如何实现?我SomeHandler可以用什么?

python logging

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

使用 matplotlib 在笛卡尔空间中绘制角度包裹数据

也许我让标题比问题更复杂,但这里是......!

我有一些在 xy 平面上连续的角度数据,跨越 360 => 0 度线 - 即 358,359,0,1,2...

如果我正在绘制这些并设置:

 plt.xlim(0,360)
Run Code Online (Sandbox Code Playgroud)

当然,我会在图的最左边有三个点,在最右边有两个点。您可以在此处的(更复杂且实际的)图中看到这一点(故意颠倒了 x 轴限制):

有角度包裹的数据集

我真正想要的是将所有点绘制在绘图窗口中相同位置的周围,也许朝向绘图的中心。在此方案下,x 轴向 360-0 度边界左侧减小,向右增大。

我不想对数据本身进行任何翻译/转换(这是一个大型数据集等),所以我希望通过一些 matplotlib 技巧来做到这一点。

我计划用 hexbin 绘制数据点,如果这有什么区别的话。

感谢您的浏览,并预先感谢您的帮助,

戴夫

python plot axes matplotlib

4
推荐指数
1
解决办法
1937
查看次数

Python:在字典中将变量链接/绑定在一起

第一篇文章,所以玩得好!

我有一个关于Python词典的相当基本的问题.我希望有一些dict值在另一个变量被更改时更新(或者至少在下次调用时重新计算) - 例如:

mass = 1.0
volume = 0.5
mydict = {'mass':mass,'volume':volume}
mydict['density'] = mydict['mass']/mydict['volume']
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,mydict ['density']只返回2.0.如果我改变mydict ['mass'] = 2.0,密度将不会更新.很好 - 我可以理解为什么 - 密度是由传递给声明时的值定义的.所以我想也许我可以用lambda表达式来解决这个问题,例如(为可怕的代码道歉!):

mydict['density_calc'] = lambda x,y: x/y
mydict['density'] = mydict['density_calc'](mydict['mass'],mydict['volume'])
Run Code Online (Sandbox Code Playgroud)

但同样,这只会返回原始密度,尽管改变了mydict ['mass'].作为最后的尝试,我尝试了这个:

def density(mass,volume): return mass/volume
mydict['density_calc'] = lambda x,y: density(x,y)
mydict['density'] = mydict['density_calc'](mydict['mass'],mydict['volume'])
Run Code Online (Sandbox Code Playgroud)

再一次,没有骰子.这似乎是一个非常简单的问题需要解决,所以提前道歉,但如果有人能帮助我,我会非常感激!

干杯,

戴夫

python variables dictionary

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