亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python使用Matplotlib繪制3D圣誕樹

 更新時(shí)間:2023年12月28日 16:26:51   作者:kuan_li_lyg  
這篇文章主要為大家詳細(xì)介紹了Python如何使用Matplotlib繪制3D圣誕樹,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前言

因?yàn)槲覀儼咽フQ樹安裝在暖氣電池旁邊,所以它很快就死了。所以我決定用 Matplotlib 繪制一棵圣誕樹。你不需要為它遮陽(yáng)避暑,它也不需要任何水。在阿瑞克斯星球,水的供應(yīng)是有限的。地球上也是如此。 

步驟

要在 matplotlib 中繪圖,我們需要將其包含在內(nèi)。

此外,我們還要為 3D 準(zhǔn)備所有庫(kù)。

import math
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

讓我們先畫一個(gè) 3D 圓,確保一切正常。

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
k=300
Z = [10 for i in range(k)]
X = [math.cos(i/10) for i in range(k)]
Y = [math.sin(i/10) for i in range(k)]
ax.scatter(X,Y,Z, c="green", marker="^")
plt.show()

不錯(cuò)!這是非常標(biāo)準(zhǔn)的。我們現(xiàn)在只修復(fù) Z 坐標(biāo)。

現(xiàn)在,應(yīng)用 Z 坐標(biāo)使其 3D 化。

Z = [i for i in range(k)]

讓我們?cè)陧敳靠s小圓的半徑。

Z = [i for i in range(k)]
X = [math.cos(i/5)*(k-i) for i in range(k)]
Y = [math.sin(i/5)*(k-i) for i in range(k)]

Matplotlib 總是傾向于貼合圖形,只需在此處添加這些限制即可:

plt.xlim(-500,500)
plt.ylim(-500,500)

 畫一些紅圈。它們的公式相同,但步長(zhǎng)更大。我們還通過在 sin 和 cos 參數(shù)上加 2 來移動(dòng)它,這樣它們就不會(huì)與樹本身相交。

k=300
Z = [i for i in range(k)]
X = [math.cos(i/5)*(k-i) for i in range(k)]
Y = [math.sin(i/5)*(k-i) for i in range(k)]
ax.scatter(X,Y,Z, c="green", marker="^")
k=300
step = 4
Z = [i for i in range(1,k,step)]
X = [math.cos(i/5+2)*(k-i+10) for i in range(1,k,step)]
Y = [math.sin(i/5+2)*(k-i+10) for i in range(1,k,step)]
ax.scatter(X,Y,Z, c="red", marker="o")
plt.xlim(-500,500)
plt.ylim(-500,500)
plt.show()

微調(diào)裝飾

c = [(i/k,abs(0.5-i/k),i/k) for i in range(1,k,step)]
ax.scatter(X,Y,Z, c=c, marker="o",s=40)

要旋轉(zhuǎn)樹形圖,我們需要為每一幀繪制樹形圖,并在 sin 和 cos 參數(shù)中添加一些常數(shù)。

我們?yōu)槌跏紙D形和每一幀復(fù)制代碼。

import math
import matplotlib.pyplot as plt
from matplotlib import animation
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111, projection="3d")
def init():
    k=300
    Z = [i for i in range(k)]
    X = [math.cos(i/5)*(k-i) for i in range(k)]
    Y = [math.sin(i/5)*(k-i) for i in range(k)]
    ax.scatter(X,Y,Z, c="green", marker="^")
    step = 3
    c = [(i/k,abs(0.5-i/k),i/k) for i in range(1,k,step)]
    Z = [i for i in range(1,k,step)]
    X = [math.cos(i/5+2)*(k-i+10) for i in range(1,k,step)]
    Y = [math.sin(i/5+2)*(k-i+10) for i in range(1,k,step)]
    ax.scatter(X,Y,Z, c=c, marker="o",s=40)
    plt.xlim(-500,500)
    plt.ylim(-500,500)
    return fig,
def animate(f):
    fig.clear()
    ax = fig.add_subplot(111, projection="3d")
    k=300
    Z = [i for i in range(k)]
    X = [math.cos(i/5+f/10)*(k-i) for i in range(k)]
    Y = [math.sin(i/5+f/10)*(k-i) for i in range(k)]
    ax.scatter(X,Y,Z, c="green", marker="^")
    step = 3
    c = [(i/k,abs(0.5-i/k),i/k) for i in range(1,k,step)]
    Z = [i for i in range(1,k,step)]
    X = [math.cos(i/5+2+f/10)*(k-i+10) for i in range(1,k,step)]
    Y = [math.sin(i/5+2+f/10)*(k-i+10) for i in range(1,k,step)]
    ax.scatter(X,Y,Z, c=c, marker="o",s=40)
    plt.xlim(-500,500)
    plt.ylim(-500,500)
    return fig,
ani=animation.FuncAnimation(fig, animate, init_func=init,
                               frames=90, interval=50, blit=True)
ani.save("christmas_tree.mp4")

這就是結(jié)果:

到此這篇關(guān)于Python使用Matplotlib繪制3D圣誕樹的文章就介紹到這了,更多相關(guān)Python Matplotlib繪制3D圣誕樹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python文件讀寫保存操作的示例代碼

    Python文件讀寫保存操作的示例代碼

    這篇文章主要介紹了Python文件讀寫保存操作的示例代碼,實(shí)現(xiàn)了單個(gè)文件和多文件的讀寫保存操作,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • python使用pyecharts繪制簡(jiǎn)單的折線圖

    python使用pyecharts繪制簡(jiǎn)單的折線圖

    這篇文章講給大家介紹一下python使用pyecharts繪制簡(jiǎn)單的折線圖的黨法步驟,文中有詳細(xì)的代碼示例講解,對(duì)我們學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • python 怎樣將dataframe中的字符串日期轉(zhuǎn)化為日期的方法

    python 怎樣將dataframe中的字符串日期轉(zhuǎn)化為日期的方法

    這篇文章主要介紹了python 怎樣將dataframe中的字符串日期轉(zhuǎn)化為日期的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解

    Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解

    本篇文章主要介紹了Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 四行Python3代碼實(shí)現(xiàn)圖片添加美顏效果

    四行Python3代碼實(shí)現(xiàn)圖片添加美顏效果

    這篇文章主要為大家介紹了如何利用Python語言實(shí)現(xiàn)給圖片添加美顏效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2022-04-04
  • 淺析Python多線程下的變量問題

    淺析Python多線程下的變量問題

    這篇文章主要介紹了Python多線程下的變量問題,由于GIL的存在,Python的多線程編程問題一直是開發(fā)者中的熱點(diǎn)話題,需要的朋友可以參考下
    2015-04-04
  • 使用python 寫一個(gè)靜態(tài)服務(wù)(實(shí)戰(zhàn))

    使用python 寫一個(gè)靜態(tài)服務(wù)(實(shí)戰(zhàn))

    今天小編就為大家分享一篇使用python 寫一個(gè)靜態(tài)服務(wù)(實(shí)戰(zhàn)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • pandas DataFrame 警告(SettingWithCopyWarning)的解決

    pandas DataFrame 警告(SettingWithCopyWarning)的解決

    這篇文章主要介紹了pandas DataFrame 警告(SettingWithCopyWarning)的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python成功解決ZeroDivisionError:?division?by?zero的方法過程

    Python成功解決ZeroDivisionError:?division?by?zero的方法過程

    在Python編程中,ZeroDivisionError:divisionbyzero是因?yàn)閲L試除以零所導(dǎo)致的常見錯(cuò)誤,這篇文章詳細(xì)介紹了錯(cuò)誤的原因、解決方案,需要的朋友可以參考下
    2024-09-09
  • Python處理文本文件中控制字符的方法

    Python處理文本文件中控制字符的方法

    最近在使用Python的時(shí)候遇到過文檔中出現(xiàn)控制字符報(bào)錯(cuò)的問題。想著總結(jié)一下,方便以后需要或這同樣遇到問題的朋友,下面這篇文章主要介紹了Python處理文本文件中控制字符的解決方法,需要的朋友可以參考借鑒。
    2017-02-02

最新評(píng)論