小编cha*_*ase的帖子

python matplotlib blit到图的轴或侧面?

每次我通过一个适合的程序,我试图刷新我在gui中的一些情节.此外,这些图是在可以调整大小的framw内,因此在调整大小后需要重新绘制轴和标签等.所以,想知道是否有人知道如何使用类似更新图的两侧plot.figure.canvas.copy_from_bbox和blit.这似乎只复制和blit图形区域的背景(绘制线条的位置),而不是图形或图形的边(标签和刻度线的位置).我一直试图让我的图表通过反复试验和读取mpl文档进行更新,但到目前为止,我的代码已经变得非常复杂,例如self.this_plot.canvas_of_plot..etc.etc.. .plot.figure.canvas.copy_from_bbox......这可能太复杂了.我知道我的语言可能有些偏差,但我一直在尝试阅读matplotlb文档,图,画布,图形,情节,图形等之间的差异开始躲避我.所以我的首要问题是:

1 - 如何更新matplotlib图周围的刻度和标签.

其次,既然我想更好地掌握这个问题的答案,

2 - 关于它们在GUI中覆盖的区域,绘图,图形,画布等之间有什么区别.

非常感谢你的帮助.

python user-interface matplotlib

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

gensim word2vec - 使用在线文字嵌入更新的数组维度

来自gensim 0.13.4.1的Word2Vec在运行中更新单词向量不起作用.

model.build_vocab(sentences, update=False)
Run Code Online (Sandbox Code Playgroud)

工作良好; 然而,

model.build_vocab(sentences, update=True)
Run Code Online (Sandbox Code Playgroud)

才不是.


我正在使用这个网站试图模仿他们所做的事情; 因此我在某些时候使用以下脚本:

model = gensim.models.Word2Vec()
sentences = gensim.models.word2vec.LineSentence("./text8/text8")
model.build_vocab(sentences, keep_raw_vocab=False, trim_rule=None, progress_per=10000, update=False)
model.train(sentences)
Run Code Online (Sandbox Code Playgroud)

然而,虽然运行update=False,使用update=True给我以下回溯:

Traceback (most recent call last):
  File "word2vecAttempt.py", line 34, in <module>
    model.build_vocab(sentences, progress_per=10000, update=True)
  File "/home/brownc/anaconda3/lib/python3.5/site-packages/gensim/models/word2vec.py", line 535, in build_vocab
    self.finalize_vocab(update=update)  # build tables & arrays
  File "/home/brownc/anaconda3/lib/python3.5/site-packages/gensim/models/word2vec.py", line 708, in finalize_vocab
    self.update_weights()
  File "/home/brownc/anaconda3/lib/python3.5/site-packages/gensim/models/word2vec.py", line 1070, in update_weights
    self.wv.syn0 = vstack([self.wv.syn0, newsyn0])
  File "/home/brownc/anaconda3/lib/python3.5/site-packages/numpy/core/shape_base.py", line 230, in vstack
    return …
Run Code Online (Sandbox Code Playgroud)

python numpy gensim

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

如何刷新Tkinter窗口中的matplotlib图?

我想知道是否有人知道为什么下面的代码按下GUI上的按钮后没有显示带有一行的图形.我想创建一个程序,在通过单击按钮导入一组数据后执行一长串命令.这些命令之一是在同一窗口内的图形上显示光谱数据.这是我到目前为止:

# import modules that I'm using
import matplotlib
matplotlib.use('TKAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import matplotlib.pyplot as pltlib
import Tkinter
from Tkinter import *
import numpy as np
import scipy as sc
#import matplotlib.pyplot as pltlib
# lmfit is imported becuase parameters are allowed to depend on each other along with bounds, etc.
from lmfit import minimize, Parameters, Minimizer



#Make object for application
class App_Window(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()
    def initialize(self):
        button …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

从曲率的上下阈值检测点/特征 - 曲线四边形检测算法

是否可以沿着具有粗糙曲率的线从一组点创建多边形,以便在两个曲率值之间选择点?

我试图使用python的opencv包(cv2)从给定的图像中检索近似的曲线四边形形状.

例如:给出边缘检测后的图像,例如:

并在使用cv2.findContours找到等高线之后:

(旁注:如果这实际上会给出方形形状而不是围绕直线会很好 - 这个图像在其右侧的形状中的间隙关闭的算法也是必需的.扩张/侵蚀可能会起作用但是会可能会摆脱可能需要保留的某些功能.)

之后,我们可以在轮廓上使用polyDPApprox,如下所示:

然而,这不是曲率依赖的 - 它只是通过使用线的最大偏差来近似.如果我们想省略一些精细的细节(这个想法可能是因为错误)并保持曲率较小的点(宽的形状) - 我们可以使用函数来提供这样的东西吗?:

(红色填充表示形状将被封闭为曲线四边形.)

相关问题: 在OpenCV中是否可以将局部曲率绘制为表示对象"点"的热图?

以下是用于分析输入图像的函数,以防任何人想要它:

# input binary image
def find_feature_points(img):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.namedWindow('img', WINDOW_NORMAL)
    cv2.imshow("img", gray)
    cv2.waitKey(0)

    contours, hierarchy = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # Draw contours to image
    print contours
    copy = img.copy()
    # img - Image.
    # pts - Array of polygonal curves.
    # npts - Array of polygon vertex counters.
    # ncontours - Number of curves.
    # …
Run Code Online (Sandbox Code Playgroud)

python math opencv image-processing edge-detection

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

python类初始化程序中的可选参数

我想知道是否有人有任何好方法可以快速解释如何使用可选参数有效地和pythonically地创建用户定义的对象.例如,我想创建这个对象:

class Object:
    def __init__(self, some_other_object, i, *j, *k):
        self.some_other_object = some_other_object
        self.i = i
        # If j is specified, assume it is = i
        if(j==None):
            self.j = i
        else:
            self.j = j
        # If k is given, assume 0
        if(k==None):
            self.k = 0
        else:
            self.k = k
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

编辑:我更改了代码,使其更广泛,更容易理解.

python oop object

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

尝试捕获或在朱莉娅中键入转换性能 - (Julia 73秒,Python 0.5秒)

我一直在和朱莉娅一起玩,因为它似乎在语法上类似于python(我喜欢),但声称速度更快.但是,我尝试使用python中的类似脚本来测试数值在使用此函数的文本文件中的位置:

function isFloat(s)
    try:
        float64(s)
        return true
    catch:
        return false
    end
end
Run Code Online (Sandbox Code Playgroud)

出于某种原因,对于具有合理数量的文本行(~500000)的文本文件,这需要花费大量时间.
为什么会这样?有一个更好的方法吗?我可以从中理解该语言的一般特征是否适用于其他语言?

以下是我运行的两个确切脚本以供参考:

python:~0.5秒

def is_number(s):
    try:
        np.float64(s)
        return True
    except ValueError:
        return False

start = time.time()
file_data = open('SMW100.asc').readlines()
file_data = map(lambda line: line.rstrip('\n').replace(',',' ').split(), file_data)

bools = [(all(map(is_number, x)), x) for x in file_data]
print time.time() - start
Run Code Online (Sandbox Code Playgroud)

朱莉娅:~73.5秒

start = time()
function isFloat(s)
    try:
        float64(s)
        return true
    catch:
        return false
    end
end
x = map(x-> split(replace(x, ",", " ")), open(readlines, "SMW100.asc"))

u = [(all(map(isFloat, i)), …
Run Code Online (Sandbox Code Playgroud)

performance try-catch type-conversion julia

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

引用Windows命令行上的引号

所以我发现这个Stack Overflow问题与我想做的事情有关; 但是,我在使用其中有空格的目录时遇到问题.我试着查看其他几个Stack Overflow问题,但要么我误解了它们,要么没有真正解决我的问题.我已经看到了将参数作为数组传递并使用%1或者某些东西来处理特殊字符的东西,但还没有任何工作.

我尝试在cmd.exe中输入以下内容:

schtasks /Create /SC DAILY /TN PythonTask /TR "python "C:\Users\me\stuff   with  spaces  \pythonprogram.py""
Run Code Online (Sandbox Code Playgroud)

但是,引号似乎没有按正确的顺序排列.我想python "C:\Users\me\stuff with spaces \pythonprogram.py"每天输入命令cmd.exe.

如何在Windows命令行上使用引号括起来?

下面的答案:

\在引用的参数之前添加反斜杠.即:

do_some_command_in_windows_shell_with_this_given_string "run "something.exe""
Run Code Online (Sandbox Code Playgroud)

替换为:

do_some_command_in_windows_shell_with_this_given_string "run \"something.exe""
Run Code Online (Sandbox Code Playgroud)

string shell cmd batch-file

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

调用默认关键字参数的最佳方法

我希望能有一个很好的方法让任何函数的传递参数变得容易.我正在制作大量的函数,每个函数都有很多变量.每个函数调用它们下面的许多函数,它们使用一些相同的参数.

我已经决定我可以创建一个包含这些函数的默认参数的结构,然后用户可以将它们设置为它们决定的值或允许在执行拟合过程时变化的值 - 但是,给出一个默认值每个参数的前期.

我一直在考虑使用函数的最佳方法,这些函数可以用于任何f()被调用的函数以获取任何数量的相关参数; 所以f()将返回相同的f(default_param_structure),因为默认值是假定的.此外,呼叫f(arg1=1, arg31='a')将替换相关参数.

这是我想要解决的一个例子:

import pandas as pd
import numpy as np
default_a = 1
default_a_min = 0
default_a_max = 2
default_b = 2
default_b_min = 1
default_b_max = 3

def default_param_struct():
    a = np.array([default_a, default_a_min, default_a_max])
    b = np.array([default_b, default_b_min, default_b_max])
    d = {'a': a, 'b': b}
    return pd.DataFrame(d, index=['val', 'min','max'])

def f(a=default_a, b=default_b, *args, **kwargs):
    return kwargs

default_param_df = default_param_struct()
print default_param_df
def_param_dict = default_param_df.loc['val'].to_dict()
print …
Run Code Online (Sandbox Code Playgroud)

python function

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