Python绘制圆锥体(3D图)
Python 绘制圆锥体(3D图)
圆锥体是⼏何中简单⽽漂亮的图形,Python具有强⼤的作图功能,但最近在试着⽤Python作图,发现很少⽂章介绍如何使⽤Python画圆锥体。
Python作图的⼤部分⽂档都是介绍2D作图,介绍3D作图,⼤部分是使⽤meshgrid函数⽣成⽅形范围的数据,然后调⽤Axes3D的函数就完成了,这种做法的确简单有效,但遇到圆锥体、圆柱体这类3D图形,则往往束⼿⽆策。
圆锥体⼏何图形很简单,⽤Matlab画圆锥体只要5⾏代码:
那么Python是否具备这种功能?答案是肯定的。
关键是提供合适的数据给Axes3D的函数。以底⾯在上,顶点在原点,半径和⾼度均为1的圆锥体为例(这个例⼦相对简单易懂),圆锥体⾯上的每个点,其⾼度正好是该点在平⾯上到中⼼原点的距离,⽽平⾯上每个点则是圆形上的⼀个点。圆形当然不能⽤⽅形表⽰,但⽤极坐标表⽰则很简单,所以可以定义极坐标,为每个点的x,y⽣成相应数据,并根据x,y计算出z的值。
详细代码和结果图如下。
# -*- coding: utf-8 -*-
#每天给⾃⼰⼀个希望,试着不为明天⽽烦恼,不为昨天⽽叹息,只为今天更美好!
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
# 简单⽅法画出漂亮的圆锥体(底⾯在上,顶点在原点)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# ⽣成圆锥数据,底⾯半径为1,⾼度为1,其余的情形留待发挥
# 先根据极坐标⽅式⽣成数据
u = np.linspace(0, 2 * np.pi, 50) #linspace的功能⽤来创建等差数列
matplotlib中subplotv = np.linspace(0, np.pi, 50)
# 数据转化为平⾯坐标数据
x = np.s(u), np.sin(v)) # outer(a,b)外积:a的每个元素乘以b的每个元素,⼆维数组
y = np.outer(np.sin(u), np.sin(v))
z = np.sqrt(x**2+y**2) #圆锥体的⾼
# Plot the surface
ax.plot_surface(x, y, z, _cmap('rainbow'))
plt.show()
结果图形如下所⽰,太漂亮了!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论