小编ymm*_*mmx的帖子

如何在创建后分享两个子图的x轴?

我正在尝试共享两个子图轴,但我需要在创建图形后共享x轴.所以,举个例子,我创建了这个数字:

import numpy as np
import matplotlib.pyplot as plt

t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)

fig=plt.figure()
ax1 = plt.subplot(211)
plt.plot(t,x)
ax2 = plt.subplot(212)
plt.plot(t,y)

# some code to share both x axis

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

而不是评论我会插入一些代码来共享两个x轴.我没有找到任何线索我怎么能这样做.有一些属性 _shared_x_axes,_shared_x_axes当我检查图轴(fig.get_axes())但我不知道如何链接它们.

python axis share matplotlib

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

使用pyinstaller时出错:UnicodeDecodeError:'utf-8'编解码器无法解码字节0xff

当我使用pyinstaller编译PyQt代码时,我遇到了一个问题.

我用这行来编译:

c:\Anaconda3\Scripts\pyinstaller.exe -y -F --distpath="." MyQt.py
Run Code Online (Sandbox Code Playgroud)

然后我收到此错误消息:

      File "c:\anaconda36bis\lib\site-packages\PyInstaller\hooks\hook-zmq.py", line
18, in <module>
    hiddenimports.extend(collect_submodules('zmq.backend'))
  File "c:\anaconda36bis\lib\site-packages\PyInstaller\utils\hooks\__init__.py",
 line 619, in collect_submodules
    repr(pkg_dir), package))
  File "c:\anaconda36bis\lib\site-packages\PyInstaller\utils\hooks\__init__.py",
 line 90, in exec_statement
    return __exec_python_cmd(cmd)
  File "c:\anaconda36bis\lib\site-packages\PyInstaller\utils\hooks\__init__.py",
 line 77, in __exec_python_cmd
    txt = exec_python(*cmd, env=pp_env)
  File "c:\anaconda36bis\lib\site-packages\PyInstaller\compat.py", line 562, in
exec_python
    return exec_command(*cmdargs, **kwargs)
  File "c:\anaconda36bis\lib\site-packages\PyInstaller\compat.py", line 369, in
exec_command
    out = out.decode(encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 152: invali
d start byte
Run Code Online (Sandbox Code Playgroud)

我不清楚错误信息,我不明白为什么会这样.

pyinstaller是否可能尝试使用不兼容的模块?我在我的脚本中使用这些:

# -*- coding: utf-8 -*- …
Run Code Online (Sandbox Code Playgroud)

python pyinstaller pyqt5

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

Python anaconda conda问题:由于进程正在运行,因此无法更新anaconda包

我有一个问题,用conda更新anaconda的包.当我进行conda更新时 - 所有问题都告诉我:

Error: Unable to remove files for package: cryptography
Please close all processes running code from cryptography and try again.
Run Code Online (Sandbox Code Playgroud)

但是,没有进程正在运行,我只打开了cmd窗口.当我想要更新dateutile时也是如此.这就像conda使用一些包然后我无法更新它们?有人知道关闭或删除这些包以重新安装它们的方法吗?

有关信息:

C:\Anaconda3\Scripts>conda info -a
Current conda install:
platform : win-64
conda version : 3.11.0
conda-build version : 1.11.0
python version : 3.4.3.final.0
requests version : 2.6.2
root environment : C:\Anaconda3 (writable)
default environment : C:\Anaconda3
envs directories : C:\Anaconda3\envs
package cache : C:\Anaconda3\pkgs
channel URLs : https://conda.binstar.org/juanlu001/win-64/
https://conda.binstar.org/juanlu001/noarch/
https://repo.continuum.io/pkgs/free/win-64/
https://repo.continuum.io/pkgs/free/noarch/
https://repo.continuum.io/pkgs/pro/win-64/
https://repo.continuum.io/pkgs/pro/noarch/
config file : C:\Users\maxime.condarc
is …
Run Code Online (Sandbox Code Playgroud)

python anaconda conda

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

将 QHBoxLayout 的每个小部件对齐到顶部

我试图将 QHBoxlayout 中的每个小部件对齐到顶部,但我得到的是每个小部件似乎都居中。我认为这是由于尺寸不同造成的。

例如:

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys



class SurfViewer(QMainWindow):
    def __init__(self, parent=None):
        super(SurfViewer, self).__init__()
        self.parent = parent
        self.setFixedWidth(300)
        self.setFixedHeight(100)

        self.wid = QWidget()
        self.setCentralWidget(self.wid)

        self.groups = QHBoxLayout()

        l_a1 = QLabel('A')
        a = QVBoxLayout()
        a.addWidget(l_a1)
        self.groups.addLayout(a)

        l_a2 = QLabel('A')
        l_b2 = QLabel('B')
        a_b = QVBoxLayout()
        a_b.addWidget(l_a2)
        a_b.addWidget(l_b2)
        self.groups.addLayout(a_b)


        l_a3 = QLabel('A')
        l_b3 = QLabel('B')
        l_c3 = QLabel('C')
        a_b_c = QVBoxLayout()
        a_b_c.addWidget(l_a3)
        a_b_c.addWidget(l_b3)
        a_b_c.addWidget(l_c3)
        self.groups.addLayout(a_b_c)

        self.groups.setAlignment(Qt.AlignTop)


        self.wid.setLayout(self.groups)


if __name__ == '__main__':
    app …
Run Code Online (Sandbox Code Playgroud)

python pyqt alignment pyqt5 qlayout

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

在子图顶部画线以渲染缩放效果

我正在尝试绘制一个图,其中两个子图是第一个的缩放。我想做的是如下图所示:

在此处输入图片说明

尤其是黑线。我现在的代码只是绘制子图

import matplotlib.pyplot as plt
import numpy as np

t=np.arange(1000)
x=np.sin(np.arange(1000)/10)

plt.figure()
ax1 = plt.subplot(2,1,1)
plt.plot(t,x)

ax2 = plt.subplot(2,2,3)
plt.plot(t[100:200],x[100:200])

ax3 = plt.subplot(2,2,4)
plt.plot(t[600:700],x[600:700])

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

但是我不知道如何在图形顶部添加黑线(以制作缩放框效果)。我不知道如何开始。有人有想法吗?

python matplotlib

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

理解`self`和`cls`之间的区别,因为它们指的是相同的属性

我试图理解他们之间的区别self,cls但是我很挣扎,即使它存在很多关于那个话题.例如:

class maclass():
    A = "class method"

    def __init__(self):
        self.B = "instance method"

    def getA_s(self):
        print(self.A)

    def getA_c(cls):
        print(cls.A)

    def getB_s(self):
        print(self.B)

    def getB_c(cls):
        print(cls.B)

C = maclass()
C.getA_s()
C.getA_c()
C.getB_s()
C.getB_c()
Run Code Online (Sandbox Code Playgroud)

这给了我:

class method
class method
instance method
instance method
Run Code Online (Sandbox Code Playgroud)

所以无论我使用什么selfcls它离开都是指相同的变量.当我加入 self.AInit__,该cls.A只是更换

def __init__(self):
        self.B = "instance method"
        self.A = "new instance method"
Run Code Online (Sandbox Code Playgroud)

我得到:

new instance method
new instance method
instance method
instance method
Run Code Online (Sandbox Code Playgroud)

如果它们是相同的话,我不明白有两种方法可以调用类成员吗?我知道这是这个论坛上的一个常见问题,但我真的不明白为什么我们可以用不同的词来指代同一个东西(我们甚至可以使用任何单词而不是selfcls …

python class self

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

在pyqtgraph中设置背景颜色的问题

在 python 中使用 pyqtgraph 模块时遇到问题。当我将白色背景颜色添加到 glscatterplot 时,散点就会消失。就像如果背景颜色被添加到散点图的颜色中,那么一切都是白色的。这是我使用的一段代码:

w = gl.GLViewWidget()
w.setBackgroundColor('w')
w.show()
sp3 = gl.GLScatterPlotItem(pos=np.transpose(pos3), color=rgba_img, size=1, pxMode=False)
w.addItem(sp3)
Run Code Online (Sandbox Code Playgroud)

如果我在 setBackgroundColor 方法中将 ('w') 替换为 ('k'),则分散的颜色很好,背景为黑色。有没有其他人遇到过这个问题?

python scatter-plot setbackground pyqtgraph

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

是否可以根据另一个向量的整数值组合(添加)向量的值

我正在尝试根据另一个向量的整数值添加向量的浮点值.

例如,如果我有:

import numpy as np
a = np.array([0.1,0.2,0.3,0.4,0.5,0.6,07.3,0.8,0.9,1.,1.2,1.4])
b = np.array([0,0,0,0,0,1,1,1,2,2,2,2]).astype(int)
Run Code Online (Sandbox Code Playgroud)

我想将a矢量的第一个值加在一起(因为b的5个第一个值是0),3个下一个值一起(因为b的3个下一个值是1),依此类推.所以最后我希望有

c = function(a,b)
c = [0.1+0.2+0.3+0.4+0.5,  0.6+7.3+0.8, 0.9+1.+1.2+1.4]
Run Code Online (Sandbox Code Playgroud)

python arrays grouping numpy

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

如何在Qt环境中嵌入的matplotlib中更快地绘制大量信号?

我试图在嵌入Qt环境的matplotlib图中绘制大量信号。这些图根据QScrollBar进行了更新,它修改了我需要显示的信号部分。我的问题是更新图形需要花费相当长的时间,尤其是因为我要更新250个信号。因此,我正在寻找一种优化EEG_plot.update函数以减少其绘制时间的方法。我不知道如何使用动画功能来加快处理过程或其他操作。我担心的是,我需要更新时间轴刻度,可能还要更新y轴标签的位置。另一件事是,如果我需要绘制的最后一段与所选窗口大小不完全对应,那么我只需要绘制一部分窗口(例如,最后一段为5s,但窗口大小为10s)

我在下面给出整个脚本

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import numpy as np


class Viewer(QMainWindow):
    def __init__(self, parent=None):
        super(Viewer, self).__init__()
        self.parent = parent
        #######################################
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)
        self.mainVBOX_param_scene = QVBoxLayout()
        self.mascene = plot(self)


        self.paramPlotV = QVBoxLayout()
        self.horizontalSliders  = QScrollBar(Qt.Horizontal)
        self.horizontalSliders.setFocusPolicy(Qt.StrongFocus)
        self.horizontalSliders.valueChanged.connect(self.update_plot)
        self.horizontalSliders.setMinimum(0)
        self.horizontalSliders.setMaximum(1)


        self.paramPlot = QHBoxLayout()
        l_gain = QLabel('Gain')
        self.e_gain = QLineEdit('5')
        l_win = QLabel('Window')
        self.e_win = QLineEdit('10')
        l_spacing …
Run Code Online (Sandbox Code Playgroud)

python matplotlib draw

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

为什么在 pycuda 中调用内核时会出现非法内存访问?

我正在尝试使用 PyCuda 在我的 RTX 2080 Ti 上实现具有 Hodgkin 和 Huxley 形式主义的神经元模型。代码相当大,所以我不会将其全部放在这里。我的课程的第一部分是设置神经元的数量,在 GPU 中创建所有变量,并根据神经元的数量获取块和网格大小(线程 1 个神经元)

class Inter_PC:
    def __init__(self, ):

        self.NbODEs = 25
        self.NbCells = int(1024 * 1)
        self.init_vector()
        self.init_vector_param()
        self.Create_GPU_SourceModule()

        BLOCK_SIZE = 1024
        self.grid = (int(self.NbCells / BLOCK_SIZE), 1)
        self.block = (BLOCK_SIZE, 1, 1)
Run Code Online (Sandbox Code Playgroud)

在函数init_vectorand中init_vector_param,我将向量放入 GPU 中计算 ODE 结果

def init_vector(self):
    self.Vs_PC_dydx1 = self.put_vect_on_GPU(np.zeros((self.NbCells), dtype=np.float32))
    self.Vs_PC_dydx2 = self.put_vect_on_GPU(np.zeros((self.NbCells), dtype=np.float32))
    self.Vs_PC_dydx3 = self.put_vect_on_GPU(np.zeros((self.NbCells), dtype=np.float32))
    self.Vs_PC_dydx4 = self.put_vect_on_GPU(np.zeros((self.NbCells), dtype=np.float32))
    self.Vs_PC_y = self.put_vect_on_GPU(np.zeros((self.NbCells), dtype=np.float32))
    self.Vs_PC_yt = self.put_vect_on_GPU(np.zeros((self.NbCells), dtype=np.float32)) …
Run Code Online (Sandbox Code Playgroud)

python pycuda

5
推荐指数
0
解决办法
757
查看次数