<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
繪製3D柱狀圖使用的是axes3d.bar()方法。
可能跟我們中學學的有一點不同的是,其語法如下:
bar(left, height, zs=0, zdir=‘z’, *args, **kwargs)
其中left表示指向側邊的軸,zs表示指向我們的方向的軸,height即表示高度的軸。這三者都需要是一維的序列物件。
在呼叫相關方法的時候,比如設定軸標籤,還有一點需要區分的是,left對應的是y軸,zs對應的是x軸。(意思就是說,比如使用plt.xticks()方法,操作的是zs;而使用plt.yticks()方法則操作的是left軸。height對應著z軸。)
一段完整的程式碼範例如下:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d.axes3d import Axes3D import numpy as np plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] = '#cc00ff' plt.rcParams['font.sans-serif'] = ['STKAITI'] # 建立畫布 fig = plt.figure() # 建立3D座標系 axes3d = Axes3D(fig) zs = range(5) left = np.arange(0, 10) height = np.array([]) for i in range(len(zs)): z = zs[i] np.random.seed(i) height = np.random.randint(0, 30, size=10) axes3d.bar(left, height, zs=z, zdir='x', color=['red', 'green', 'purple', 'yellow', 'blue', 'black', 'gray', 'orange', 'pink', 'cyan']) plt.xticks(zs, ['1月份', '2月份', '3月份', '4月份', '5月份']) plt.yticks(left, ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G']) plt.xlabel('月份') plt.ylabel('型號') plt.show()
影象效果如下:
繪製曲面圖使用的是plot_surface()方法,這個方法的引數相對而言更簡單。且X、Y、Z三者的順序相對較為容易分辨。
通過讀範例程式碼,即可快速掌握其用法:
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D plt.rcParams['font.sans-serif'] = ['STKAITI'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] = '#cc00ff' fig = plt.figure(figsize=(10, 8), facecolor='#cc00ff') ax = Axes3D(fig) delta = 0.125 # 生成代表X軸資料的列表 x = np.arange(-4.0, 4.0, delta) # 生成代表Y軸資料的列表 y = np.arange(-3.0, 4.0, delta) # 對x、y資料執行網格化 X, Y = np.meshgrid(x, y) Z1 = np.exp(-X**2 - Y**2) Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2) # 計算Z軸資料(高度資料) Z = (Z1 - Z2) * 2 # 繪製3D圖形 ax.plot_surface(X, Y, Z, rstride=1, # rstride(row)指定行的跨度 cstride=1, # cstride(column)指定列的跨度 cmap=plt.get_cmap('rainbow')) # 設定顏色對映 plt.xlabel('X軸', fontsize=15) plt.ylabel('Y軸', fontsize=15) ax.set_zlabel('Z軸', fontsize=15) ax.set_title('《曲面圖》', y=1.02, fontsize=25, color='gold') # 設定Z軸範圍 ax.set_zlim(-2, 2) plt.show()
更換一組資料,呈現的則是另一種藝術效果:
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D plt.rcParams['font.sans-serif'] = ['STKAITI'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] = '#cc00ff' fig = plt.figure(figsize=(12, 10), facecolor='#cc00ff') ax = Axes3D(fig) delta = 0.125 # 生成代表X軸資料的列表 x = np.linspace(-2, 2, 10) # 生成代表Y軸資料的列表 y = np.linspace(-2, 2, 10) # 對x、y資料執行網格化 X, Y = np.meshgrid(x, y) # 計算Z軸資料(高度資料) Z = X**2 - Y**2 # 繪製3D圖形 ax.plot_surface(X, Y, Z, rstride=1, # rstride(row)指定行的跨度 cstride=1, # cstride(column)指定列的跨度 cmap=plt.get_cmap('rainbow')) # 設定顏色對映 plt.xlabel('X軸', fontsize=15) plt.ylabel('Y軸', fontsize=15) ax.set_zlabel('Z軸', fontsize=15) ax.set_title('《曲面圖》', y=1.02, fontsize=25, color='gold') plt.show()
在3D曲面圖範例1的基礎上稍作修改。
繪製散點圖使用scatter()方法,將散點顏色設定為綠色,紅色邊沿。
程式碼範例如下:
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D plt.rcParams['font.sans-serif'] = ['STKAITI'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] = '#cc00ff' fig = plt.figure(figsize=(10, 8), facecolor='#cc00ff') ax = Axes3D(fig) delta = 0.125 # 生成代表X軸資料的列表 x = np.arange(-4.0, 4.0, delta) # 生成代表Y軸資料的列表 y = np.arange(-3.0, 4.0, delta) # 對x、y資料執行網格化 X, Y = np.meshgrid(x, y) Z1 = np.exp(-X**2 - Y**2) Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2) # 計算Z軸資料(高度資料) Z = (Z1 - Z2) * 2 # 繪製3D圖形 ax.scatter(X, Y, Z, c='green', edgecolors='red') plt.xlabel('X軸', fontsize=15) plt.ylabel('Y軸', fontsize=15) ax.set_zlabel('Z軸', fontsize=15) ax.set_title('《散點圖》', y=1.02, fontsize=25, color='gold') # 設定Z軸範圍 ax.set_zlim(-2, 2) plt.show()
繪圖效果如下:
繪製曲線圖,使用的則是我們最最最熟悉的plot()方法。
其他部分基本不變,資料部分生成三組適合我們繪圖的資料,線條為金色,寬度設定為3.
程式碼如下:
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D plt.rcParams['font.sans-serif'] = ['STKAITI'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] = '#cc00ff' fig = plt.figure(figsize=(10, 8), facecolor='#cc00ff') ax = Axes3D(fig) theta = np.linspace(0, 3.14*10, 1000) r = np.linspace(0, 1, 1000) x = r * np.cos(theta) y = r * np.sin(theta) z = np.linspace(0, 4, 1000) ax.plot(x, y, z, color='gold', lw=3) plt.xlabel('X軸', fontsize=15) plt.ylabel('Y軸', fontsize=15) ax.set_zlabel('Z軸', fontsize=15) ax.set_title('《曲線圖》', y=1.02, fontsize=25, color='gold') plt.show()
影象效果如下:
以上就是Python+Matplotlib繪製3D影象的範例詳解的詳細內容,更多關於Python Matplotlib 3D影象的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45