我正在尝试使用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) 我想从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路径相关的东西,但我不知道该怎么做.
我有一个相对简单的问题(我认为).我正在研究一段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) 考虑以下示例:
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_anchor
from时plt.legend
,上面的代码应该生成如下内容:
但是,当我使用(如上面的代码中所示)将图例放置在子图之外时bbox_to_anchor
,子图会被压扁:
显然,这是不希望的。bbox_to_anchor
和之间似乎存在冲突tight_layout()
(如果您从上面的代码中删除其中任何一个,就会出现一些合理的结果)。我做错了什么,还是这是已知/预期的行为?
这个问题在各种后端下都会重现。我没有收到任何警告或错误。我正在使用 matplotlib 版本2.2.2
。
预案 Python 包向 Matplotlib 库添加了附加功能,包括颜色图操作对我来说特别有吸引力的一项功能是旋转/移动色彩图的能力。给你举个例子:
\nimport 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 操作有点神秘,所以任何帮助将不胜感激。
我试图将另一个作者的一段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重写的代码不能正常工作(卡在循环中),所以我认为我误解了上面的语句.但正如你们几个人所说的那样,首先是正确的.那我一定是别的......
我最近在 Linux Mint 19 上安装了该environment-modules
软件包(版本4.1.1-1
),我正在尝试弄清楚如何设置不同的环境。不幸的是,当您还不是该主题的专家时,文档只提供了很少的指导(我希望有一个简单的示例,但我发现主要只是一个命令列表)。更具体地说,我有以下情况:
/usr/share/modules/
。/usr/local/modules/mpi/gnu
和中/usr/local/modules/mpi/intel
。module load mpi/gnu
、module load mpi/intel
或类似的环境)。如果这个问题很琐碎,或者之前已经发布过,我深表歉意。模块包的名称使得在网络上搜索支持变得异常困难(就像有人将他们的产品命名为Software;祝你好运在 Google 上找到你需要的东西)。我们将非常感谢您的帮助。