フリー素材は便利ですが、自分の思い通りのデザインにならないのが残念なところ。
そこで、Pythonを使ってillustratorの素材を作ってみました。
ただ、Cartopyで地図をつくり張り付ける場合、ベクターデータ形式(eps,svgなど)で出力すると、
サイズが大きくイラレが応答しなくなるのでご注意ください。
完成したgifはこんな感じです

スポンサーリンク
使用した画像とPythonコード
使用した画像はこちらです。幅1152px、高さ648pxで作っています。
pythonコードにも書いておきましたが、pngファイルを多く出力することになるので、あらかじめpngを入れるディレクトリ(新しいフォルダー)を作ってください

#!/usr/bin/env python3
#必要なものを宣言
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from PIL import Image, ImageFilter
import numpy as np
#解像度の指定
set_dpi = 100
#できたpngファイルを入れる場所を指定
#たくさんのpngを保存するので、新しくディレクトリを作った方がよい
DIR1 = '/home/User/3D_plot/figs/'
#球の半径
radius = 15
#ここから作図
fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot( 111 , projection='3d')
#グリットの最大値。radius<rmasにすること
rmax = 24
ax.set_xlim(-rmax,rmax)
ax.set_ylim(-rmax,rmax)
ax.set_zlim(-rmax,rmax)
#画像の読み込み
img = Image.open('artboard.png')
#RGBに変換。jpgの場合は必要なし
img = img.convert("RGB")
#RGBの範囲は0~1の値をとるため、256で割る作業をする。
mm = np.array(img)/256.
#緯度経度の指定
long = np.linspace(0, 2*np.pi, mm.shape[1])
lat = np.linspace(-0.5*np.pi, 0.5*np.pi, mm.shape[0])[::-1]
lat2, long2 = np.meshgrid(lat, long)
X = (radius*np.cos(lat2)*np.cos(long2)).T
Y = (radius*np.cos(lat2)*np.sin(long2)).T
Z = (radius*np.sin(lat2)).T
#ax.view_initの位置をmesで変化させることで、球が回る仕組み
for mes in range(0, 90, 10):
ax.plot_surface(X, Y, Z, facecolors = mm, shade=False, rstride=7, cstride=7)
ax.view_init(elev=mes, azim=0)
#軸、グリットの削除
ax._axis3don = False
#pngで保存
fileo1 = DIR1 +'3dplot_' + str(mes) +'.png'
plt.savefig(fileo1,dpi=set_dpi)
png出力が終わったら、ImageMagickを使ってgifに
gifにする場合は、出力したpngがあるディレクトリに移動(上のPythonコードでいうとDIR1)して
ImageMagickを使ってgifにします。PythonコードからImageMagickを呼び出すこともできますが、
コマンドライン(windowsの方はコマンドプロンプトから)以下の1行を入力してください。
gifのファイル名は自由につけて構いません。convertでうまくいかない場合は「magick convert」で試してみてください
$ convert -delay 5 -loop 0 3dplot_*.png 3dplot.gif