Python 繪製圓柱體(3D圖)
不知道爲何,介紹用Python畫3D圖形,很少提到圓錐體、圓柱體。或者是有些工具可以直接畫出吧。
在上一篇文章中解決了圓錐體的問題(見下鏈接),現在把圓柱體問題也一併解決下,這個問題困擾了好幾天,因爲圓柱體本身看上去不像是一個曲面問題。
其實,明白幾何作圖原理的話,圓柱體並不很難。圓柱體其實是一個圓,或者說是N多個圓,每個圓對應的高度不同。這句話可能不是很好理解,但仔細想想也不是很難。
畫圓是一件很簡單的事情,x是角度的sin值,y是角度的cos值,高度劃分爲多少份,就要把圓重複多少次。代碼也不多,只有五行,代碼和結果圖如下。
# -*- coding: utf-8 -*-
#哪有什麼可以直接登頂的人生,只有根據反饋不斷迭代的過程!
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
# 簡單方法畫出漂亮的圓柱體(半徑和高度均爲1)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成圓柱數據,底面半徑爲r,高度爲h。
# 先根據極座標方式生成數據
u = np.linspace(0,2*np.pi,50) # 把圓分按角度爲50等分
h = np.linspace(0,1,20) # 把高度1均分爲20份
x = np.outer(np.sin(u),np.ones(len(h))) # x值重複20次
y = np.outer(np.cos(u),np.ones(len(h))) # y值重複20次
z = np.outer(np.ones(len(u)),h) # x,y 對應的高度
# Plot the surface
ax.plot_surface(x, y, z, cmap=plt.get_cmap('rainbow'))
plt.show()
漂亮的結果圖形如下所示!