python画立体地球_创建可旋转的三维地球

有趣的问题。我试图基本上遵循@Skeletor概述的思想,并映射图像,以便可以用plot_surface来显示:import PIL

import matplotlib.pyplot as plt

import numpy as np

from mpl_toolkits.mplot3d import Axes3D

# load bluemarble with PIL

bm = PIL.Image.open('bluemarble.jpg')

# it's big, so I'll rescale it, convert to array, and divide by 256 to get RGB values that matplotlib accept

bm = np.array(bm.resize([d/5 for d in bm.size]))/256.

# coordinates of the image - don't know if this is entirely accurate, but probably close

lons = np.linspace(-180, 180, bm.shape[1]) * np.pi/180

lats = np.linspace(-90, 90, bm.shape[0])[::-1] * np.pi/180

# repeat code from one of the examples linked to in the question, except for specifying facecolors:

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

x = np.outer(np.cos(lons), np.cos(lats)).T

y = np.outer(np.sin(lons), np.cos(lats)).T

z = np.outer(np.ones(np.size(lons)), np.sin(lats)).T

ax.plot_surface(x, y, z, rstride=4, cstride=4, facecolors = bm)

plt.show()

结果:

Aqo3W.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值