小编MPA*_*MPA的帖子

Matplotlib动画:使用blit时,第一帧仍保留在画布中

我正在尝试使用Matplotlib动画库绘制两个旋转椭圆,我设法让它工作(或多或少).问题是正在渲染的第一帧不会更新,所以当我在画布中有两个旋转椭圆时,我也有原始位置/方向的椭圆.看看我简单的代码:

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
from matplotlib import animation

fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
e1 = Ellipse(xy=(0.5, 0.5), width=0.5, height=0.2, angle=60)
e2 = Ellipse(xy=(0.8, 0.8), width=0.5, height=0.2, angle=100)

def init():
    ax.add_patch(e1)
    ax.add_patch(e2)
    return [e1,e2]

def animate(i):
    e1.angle = e1.angle + 0.5
    e2.angle = e2.angle + 0.5
    return [e1,e2]

anim = animation.FuncAnimation(fig, animate, init_func=init, interval=1, blit=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?我当然可以关闭blit,但这会让它变得非常慢,所以这不是一个真正的选择.

编辑:最终(工作)代码

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
from matplotlib import animation

fig = plt.figure()
ax …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

9
推荐指数
1
解决办法
3782
查看次数

安装模块时出现Python ImportError [Ubuntu]

我想从Windows切换到Linux(Ubuntu)编写我的python程序,但我无法让事情发挥作用.问题在于:我可以看到在Ubuntu中预装了很多模块(如numpy,pandas,matplotlib等).它们很好地位于/ host/Python27/Lib/site-packages目录中.但是当我编写一个测试python脚本并尝试执行它时,每当我尝试导入一个模块时它会给我一个ImportError(例如import numpy as np给我ImportError: No module named numpy).当我输入which python命令行时,我得到了/usr/bin/python路径.我想我可能需要改变与python路径相关的东西,但我不知道该怎么做.

python linux ubuntu

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

在Cython中优化代码的技巧

我有一个相对简单的问题(我认为).我正在研究一段Cython代码,当给定应变和特定方向时(即,对于一定量的应变,平行于给定方向的半径),计算应变椭圆的半径.在每个程序运行期间,此函数被称为几百万次,并且分析显示该功能是性能方面的限制因素.这是代码:

# importing math functions from a C-library (faster than numpy)
from libc.math cimport sin, cos, acos, exp, sqrt, fabs, M_PI

cdef class funcs:

    cdef inline double get_r(self, double g, double omega):
        # amount of strain: g, angle: omega
        cdef double l1, l2, A, r, g2, gs   # defining some variables
        if g == 0: return 1   # no strain means the strain ellipse is a circle
        omega = omega*M_PI/180   # converting angle omega to radians
        g2 = g*g
        gs …
Run Code Online (Sandbox Code Playgroud)

python optimization cython

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

Matplotlib 图例 +ight_layout = 压扁的子图

考虑以下示例:

import matplotlib.pyplot as plt
from matplotlib import gridspec
import numpy as np

x = np.linspace(0, 10, 100)
y = 2*x + 0.5

plt.figure(figsize=(6, 4))
gs = gridspec.GridSpec(2, 2)

plt.subplot(gs[0, 0])
plt.plot(x, y, "o")

plt.subplot(gs[0, 1])
plt.plot(x, y, "o")

plt.subplot(gs[1, :])
plt.plot(x, y, "o", label="test")
plt.legend(loc="upper center", bbox_to_anchor=(0.5, 2.7))

plt.subplot(gs[2, :])
plt.plot(x, y, "o")

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

当我删除bbox_to_anchorfrom时plt.legend,上面的代码应该生成如下内容:

在此输入图像描述

但是,当我使用(如上面的代码中所示)将图例放置在子图之外时bbox_to_anchor,子图会被压扁:

在此输入图像描述

显然,这是不希望的。bbox_to_anchor和之间似乎存在冲突tight_layout()(如果您从上面的代码中删除其中任何一个,就会出现一些合理的结果)。我做错了什么,还是这是已知/预期的行为?

这个问题在各种后端下都会重现。我没有收到任何警告或错误。我正在使用 matplotlib 版本2.2.2

python matplotlib

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

旋转 matplotlib 颜色图

预案 Python 包向 Matplotlib 库添加了附加功能,包括颜色图操作对我来说特别有吸引力的一项功能是旋转/移动色彩图的能力。给你举个例子:

\n
import proplot as pplot\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nstate = np.random.RandomState(51423)\ndata = state.rand(30, 30).cumsum(axis=1)\n\nfig, axes = plt.subplots(ncols=3, figsize=(9, 4))\nfig.patch.set_facecolor("white")\n\naxes[0].pcolormesh(data, cmap="Blues")\naxes[0].set_title("Blues")\naxes[1].pcolormesh(data, cmap="Blues_r")\naxes[1].set_title("Reversed Blues")\naxes[2].pcolormesh(data, cmap="Blues_s")\naxes[2].set_title("Rotated Blues")\n\nplt.tight_layout()\nplt.show()\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

在第三列中,您会看到 180\xc2\xb0 旋转版本Blues。目前 ProPlot 存在一个错误,不允许用户将绘图样式恢复为 Matplotlib 的默认样式,所以我想知道是否有一种简单的方法可以在 Matplotlib 中旋转颜色图,而无需求助于 ProPlot。我总是发现 Matplotlib 中的 cmap 操作有点神秘,所以任何帮助将不胜感激。

\n

python matplotlib colormap

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

C:符号x = y [a = b]意味着什么?

我试图将另一个作者的一段C代码重写为Python,我遇到了以下类型的符号:

x = y[a=b];
Run Code Online (Sandbox Code Playgroud)

y数组在哪里a,b是整数.起初我认为这意味着:

a = b;
x = y[a];
Run Code Online (Sandbox Code Playgroud)

但显然它没有.谁能告诉我这个表达意味着什么?请原谅我,如果这个问题是重复的,但很难用几个可搜索的关键字来概括这个问题,而我找不到任何可以回答我问题的问题.

我试图重写的代码的来源:链接

编辑:

Python重写的代码不能正常工作(卡在循环中),所以我认为我误解了上面的语句.但正如你们几个人所说的那样,首先是正确的.那我一定是别的......

c

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

设置环境模块

我最近在 Linux Mint 19 上安装了该environment-modules软件包(版本4.1.1-1),我正在尝试弄清楚如何设置不同的环境。不幸的是,当您还不是该主题的专家时,文档只提供了很少的指导(我希望有一个简单的示例,但我发现主要只是一个命令列表)。更具体地说,我有以下情况:

  • 我已经安装了模块/usr/share/modules/
  • 我使用两种不同的编译器(GNU 和 Intel)编译了 OpenMPI。相应的二进制文件、库等分别位于/usr/local/modules/mpi/gnu和中/usr/local/modules/mpi/intel
  • 我想设置两个环境,每个环境对应 MPI 的每个编译版本,以便我可以轻松地在这些环境之间切换(module load mpi/gnumodule load mpi/intel或类似的环境)。

如果这个问题很琐碎,或者之前已经发布过,我深表歉意。模块包的名称使得在网络上搜索支持变得异常困难(就像有人将他们的产品命名为Software;祝你好运在 Google 上找到你需要的东西)。我们将非常感谢您的帮助。

environment-modules

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