小编Jdo*_*dog的帖子

matplotlib孵出fill_between没有边缘?

我有一个我想要孵化的区域,它与现有的虚线的绘图线(相同颜色)相邻.

但是,当我使用fill_between该区域进行孵化时,还会在其周围绘制边框.此边框似乎与创建阴影线的线共享属性,因此我无法将edgecolour设置为"none"或将linestyle设置为" - ",因为阴影线同样受到影响.

import matplotlib.pyploy as plt
plt.plot([0,1],[0,1],ls="--",c="b")
plt.fill_between([0,1],[0,1],color="none",hatch="X",edgecolor="b")
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在这个例子中,我希望从0到1,1的对角线是虚线.

提前谢谢了.

python matplotlib

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

将subprocess.Popen输出附加到文件?

我可以成功地将输出重定向到文件,但是这似乎覆盖了文件的现有数据:

import subprocess
outfile = open('test','w') #same with "w" or "a" as opening mode
outfile.write('Hello')
subprocess.Popen('ls',stdout=outfile)
Run Code Online (Sandbox Code Playgroud)

将从'Hello'文件中删除该行.

我想一个解决方法是将输出存储在别处作为字符串或其他东西(它不会太长),并手动附加outfile.write(thestring)- 但我想知道我是否遗漏了模块内的一些方便这一点.

python subprocess popen

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

如何使用误差线将多项式拟合到数据

我目前正在使用numpy.polyfit(x,y,deg)来将多项式拟合到实验数据.然而,我想拟合一个基于点的误差使用加权的多项式.

我找到了使用权重的scipy.curve_fit,我想我可以将函数'f'设置为我所需顺序的多项式,并将我的权重放在'sigma'中,这应该达到我的目标.

我想知道还有另一个更好的方法吗?

非常感谢.

python numpy curve-fitting scipy

9
推荐指数
2
解决办法
3万
查看次数

将Perl转换为Python:执行此操作或死亡

我正在将Perl(其中我知之甚少)脚本移动到python.

$path = $ENV{ 'SOME_NAME' } || die " SOME_NAME ENV VARIABLE NOT FOUND\n";
Run Code Online (Sandbox Code Playgroud)

我可以(希望)看到这一行做了什么,要么将变量'path'设置为环境变量'SOME_NAME',要么失败,然后向用户输出错误消息.(附注:任何人都知道如何让搜索引擎搜索像'||'这样的特殊字符?)

我试图以"pythonic"的方式实现它(比请求更容易请求宽恕)使用:

try:
    path = os.environ['SOME_NAME']
except KeyError,e:
    print "SOME_NAME ENVIRONMENT VARIABLE NOT FOUND\n"
    raise e
Run Code Online (Sandbox Code Playgroud)

但这看起来相当麻烦,特别是当我为3个不同的环境变量做这件事时.

任何想法,如果有更好的实施,或者你会说这是"pythonic"的方式吗?

非常感谢

python perl

8
推荐指数
2
解决办法
1261
查看次数

Conda虚拟环境在Windows下不会改变

我已经为Windows安装了Anaconda 2.2.0并通过以下方式创建了一个虚拟环境:

> conda create -n my-env anaconda
Run Code Online (Sandbox Code Playgroud)

环境是成功创建的,我在我的envinronments列表中看到它(实际上目录在Anaconda\envs ..)

> conda info -e
# conda environments:
#
my-env                   D:\Anaconda\envs\my-env
root                  *  D:\Anaconda
Run Code Online (Sandbox Code Playgroud)

但是,当运行activate.bat脚本来切换envinronment时,虽然看起来成功但实际上并没有进行切换:

> activate.bat my-env
Activating environment "astropy-dev"...
> conda list -e
# conda environments:
#
my-env                   D:\Anaconda\envs\my-env
root                  *  D:\Anaconda
Run Code Online (Sandbox Code Playgroud)

随着*指示活跃的环境.

我在Windows上看到了conda激活的一些问题,但没有发现这个特定的问题.

有关详细信息:我希望复制整个Anaconda软件包分发版,然后在一个软件包上安装开发版.

python windows anaconda conda

8
推荐指数
1
解决办法
2657
查看次数

散景绘制第二轴 - 如何获得主轴的限制?

我有一个在x轴(data["obs_date"])上有日期的散景图,我希望顶部的另一个x轴覆盖相同的范围,但以不同的格式显示(mjd下图).

我试图添加第二个轴:

plot.extra_x_ranges = {"MJD":
                           Range1d(start=Time(min(data["obs_date"])).mjd,
                                   end=Time(max(data["obs_date"])).mjd)}
plot.add_layout(LinearAxis(x_range_name="MJD", axis_label="MJD",
                               axis_label_text_font_size="16pt"),
                               "above")
Run Code Online (Sandbox Code Playgroud)

然而,由于背景虚化增加了一个小的缓冲区,以情节的限制,使用min maxdata["obs_date"]为这个新中轴线的限制给了我一个小胶印机-下面的图片16 Jan 2018应该一致58134.当我只有一点绘图时,它也会导致它破裂.

如何设置新轴的极限,以便"了解"主轴的极限?来自matplotlib背景,我想我正在寻找的等价物ax.get_xlim().

在此输入图像描述

python bokeh

6
推荐指数
1
解决办法
536
查看次数

填充 scipy affine_transform 输出以显示变换图像的非重叠区域

我有源 ( src) 图像,我希望dst使用仿射变换对齐到目标 ( ) 图像,同时在对齐过程中保留两个图像的完整范围(甚至是非重叠区域)。

我已经能够计算仿射变换旋转和偏移矩阵,我将其提供给scipy.ndimage.interpolate.affine_transform恢复dst对齐的src图像。

问题在于,当图像未完全重叠时,生成的图像将被裁剪为仅两个图像的公共足迹。我需要的是放置在同一像素坐标系上的两个图像的完整范围。这个问题几乎是这个问题的重复- 那里的优秀答案和存储库为 OpenCV 转换提供了这一功能。不幸的是我需要这个来scipy实现。

太晚了,在多次碰壁试图将上述问题的答案翻译为 后scipy,我遇到了这个问题并随后遵循了这个问题。后一个问题确实让我们对仿射变换的奇妙世界有了一些了解scipy,但我还无法满足我的特殊需求。

src从到 的变换dst可以具有平移和旋转。我只能让翻译起作用(下面显示了一个示例),并且我只能让旋转起作用(主要是围绕下面的内容进行黑客攻击并从使用reshape中的参数中获取灵感scipy.ndimage.interpolation.rotate)。然而,将两者结合起来我彻底迷失了。我试图计算什么应该是正确的offset(再次参见这个问题的答案),但我无法让它在所有情况下工作。

填充仿射变换的仅翻译工作示例,主要遵循此存储库,在这个答案中进行了解释:

from scipy.ndimage import rotate, affine_transform
import numpy as np
import matplotlib.pyplot as plt

nblob = 50
shape = (200, 100)
buffered_shape = (300, …
Run Code Online (Sandbox Code Playgroud)

python opencv numpy scipy affinetransform

6
推荐指数
1
解决办法
985
查看次数

emacs语法高亮数字不是单词的一部分(使用正则表达式?)

我最近搬到了emacs,我习惯于/喜欢突出显示的数字.我从这里开始的快速黑客将以下内容放入我的.emacs:

(add-hook 'after-change-major-mode-hook
      '(lambda () (font-lock-add-keywords 
                   nil 
                   '(("\\([0-9]+\\)" 
                      1 font-lock-warning-face prepend)))))
Run Code Online (Sandbox Code Playgroud)

这提供了一个良好的开端,即突出显示任何数字.但是,我是一个完整的正则表达式初学者,理想情况下会喜欢以下行为:

  • 如果它是浮点数的一部分,也会突出显示小数点,例如12.34
  • 如果它是下一个/单词的一部分,请不要突出显示该数字的任何部分.例如,在这些情况下:foo11 ba11r 11spam,没有了"1'的应突出
  • 允许两个数字整数内的'e'允许科学记数法(不需要,奖励积分)

不幸的是,这看起来非常像一个"为我做这个"的问题,我不愿意发布,但到目前为止我还没有取得任何体面的进展.

据我所知,发现[^a-zA-Z][0-9]+[^a-zA-Z]除了字母之外的任何东西(例如等号)都匹配,但所有这一切都包括突出显示中的相邻符号.我不知道如何判断它"只会突出显示数字,如果两边都没有字母".

当然,我无法想象正则表达式是复杂语法高亮显示的方式,所以欢迎在emacs创意中任何好的数字突出显示,

任何帮助非常感谢.(如果它有任何区别,这是在Python编码时使用.)

regex emacs syntax-highlighting

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

带有最初隐藏/静音的图例组的散景图

基本上我想要这个,但是当情节加载时,一些图例条目已经被静音或隐藏,用户点击以显示它们。 在此处输入图片说明

我试图寻找 Bokeh 的文档,但找不到我需要的设置。

python bokeh

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

将默认值插入 tkinter Entry 会停止验证

我一直在关注此处对输入框的验证。下面的代码来自带有附加条件的答案,即如果输入的值是,'Q'则程序将添加'test'到 Entry 值的开头。

但是,一旦插入此值,所有验证似乎都将超出窗口,并且条目允许大写值。对我的程序进行的一些测试显示验证命令(OnValidate在本例中)不会在 Entry 的任何其他事件(键、焦点输入/输出等)上被调用。

import Tkinter as tk
class MyApp():
    def __init__(self):
        self.root = tk.Tk()
        vcmd = (self.root.register(self.OnValidate), 
                '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
        self.entry = tk.Entry(self.root, validate="key", 
                              validatecommand=vcmd)
        self.entry.pack()
        self.root.mainloop()

    def OnValidate(self, d, i, P, s, S, v, V, W):
        if S == "Q":
            self.entry.insert(0,"test")
        # only allow if the string is lowercase
        return (S.lower() == S)

app=MyApp()
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是我希望 Entry 显示一个默认值,如果它的值在用户进行任何更改后保留为空。(即我的情况是if not P在焦点上)

任何想法如何实现这一点或上面出了什么问题,非常感谢。

python validation tk-toolkit tkinter

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