matplotlibを使用して透明な背景を持ついくつかのgifを生成したいと思います。さまざまなオプションを試しましたが、透明な背景でファイルを取得することはできません。現在の設定では、そのような最初のフレームを取得しますが、残りのフレームは取得しません。アニメーションを取得する方法があります:以下は、結果として与え私のコード透明な背景を持つmplot3dアニメーション
from __future__ import division
from numpy import pi, sin, cos, mgrid
from scipy.special import jn, jn_zeros
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import rcParams
# In Windows the next line should provide the full path to convert.exe
# since convert is a Windows command
rcParams['animation.convert_path'] = "C:\Program Files\ImageMagick-6.9.3\convert.exe"
rcParams['savefig.transparent'] = True
rcParams['savefig.dpi'] = 130
rcParams['savefig.pad_inches'] = 0
plot_args = {'rstride': 1, 'cstride': 1, 'cmap':"RdYlBu",
'linewidth': 0.5, 'antialiased': True, 'color': '#1e1e1e',
'shade': True, 'alpha': 1.0, 'vmin': -1, 'vmax':1}
def data_gen(num):
ax.cla()
m, n = 1, 2
lam = jn_zeros(m, n)[-1]
dt = 2*pi/(30*lam)
z = cos(m*t)*jn(m, lam*r)*sin(lam*num*dt)
surf = ax.plot_surface(x, y, z, **plot_args)
ax.view_init(elev=30, azim=45)
ax.set_xlim(-0.6, 0.6)
ax.set_ylim(-0.6, 0.6)
ax.set_zlim(-1, 1)
plt.axis("off")
return surf
r, t = mgrid[0:1:20j, 0:2*pi:40j]
x, y = r*cos(t), r*sin(t)
fig = plt.figure(facecolor=None)
ax = fig.add_subplot(111, projection='3d')
ani = animation.FuncAnimation(fig, data_gen, range(30), blit=False)
ani.save("Drum vibration mode.gif", writer='imagemagick')
ある
質問(あなたがそれをクリックすると、あなたはその1つのフレームだけが透明で見ることができます) mplot3dを使用して透明な背景?
これはhttp://blog.adrian.pw/posts/2016/06/matplotlib-transparent-animation/ですか?あなたが探しているのは、 'fig.patch.set_alpha(0)'と 'ani.save( 'circle_anim.mov'、codec =" png "、dpi = 100、bitrate = -1、 savefig_kwargs = {'transparent':真、 'facecolor': 'none'}) '。私は今は試すことができませんが、後でそれを与えるでしょう。 –
@JacquesGaudin、私はちょうどそれをチェックしました。それはクールですが、GIFとしてイメージをエクスポートしません。実際には、 '' savefig_kwargs''はGIFライターの使用時に無視されます。 – nicoguaro
@JacquesGaudin、ちょうど試した:動作しません。 – nicoguaro