溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)

發(fā)布時(shí)間:2020-07-30 10:17:14 來(lái)源:網(wǎng)絡(luò) 閱讀:55679 作者:CFishHome 欄目:編程語(yǔ)言

前沿

Python提供了很多模塊用于數(shù)據(jù)可視化,其中matplotlib、pygal等模塊。我參考網(wǎng)上熱門書(shū)籍《Python編程從入門到實(shí)戰(zhàn)》,在測(cè)試與學(xué)習(xí)過(guò)程中遇到的些許問(wèn)題加以解決,才寫(xiě)下這一項(xiàng)目實(shí)戰(zhàn)的心得,對(duì)于Python基礎(chǔ)部分就不細(xì)講,主要是項(xiàng)目核心要點(diǎn)和解決方案的描述。本小節(jié)先講述pyplot模塊的基本使用。

新手的建議

針對(duì)新手,真心覺(jué)得不要直接使用Python下載來(lái)的IDLE來(lái)開(kāi)發(fā),因?yàn)楣δ芴倭耍膊缓檬褂?。我的建議是對(duì)于Python初學(xué)者,先安裝Anaconda,這是一個(gè)基于Python的數(shù)據(jù)處理和科學(xué)計(jì)算平臺(tái),它已經(jīng)內(nèi)置了許多非常有用的第三方庫(kù),我們裝上Anaconda,就相當(dāng)于把數(shù)十個(gè)第三方模塊自動(dòng)安裝好了,非常簡(jiǎn)單易用,在安裝界面添加Anaconda到PATH環(huán)境變量中勾上,這樣就會(huì)自動(dòng)添加環(huán)境變量了。Anaconda 自帶了一個(gè)編輯器-Spyder,可以使用Spyder編寫(xiě)代碼,知道有這個(gè)編輯器就好。然后再安裝一個(gè)PyCharm,它是一種Python IDE,帶有一整套可以幫助用戶在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具。
Anaconda和PyCharm安裝過(guò)程和方法文檔鏈接,我是摘抄網(wǎng)上有用的資料再總結(jié)出來(lái)的:鏈接:https://pan.baidu.com/s/10KcfLLvI9omIRSJ6JMK9Uw 密碼:cgf8

利用pyplot模塊的plot函數(shù)繪制折線圖

我們先導(dǎo)入模塊pyplot,然后使用該模塊的plot函數(shù)來(lái)繪制折線圖,接著調(diào)用該模塊的相關(guān)函數(shù)來(lái)調(diào)整、設(shè)置圖表的標(biāo)題、橫縱標(biāo)簽、刻度標(biāo)記內(nèi)容或大小。注意, pyplot模塊的plot函數(shù)可以接收輸入?yún)?shù)和輸出參數(shù),還有線條粗細(xì)等參數(shù),但是若plot函數(shù)只指定輸出參數(shù)(列表),那么輸入?yún)?shù)默認(rèn)由0開(kāi)始。
(1)plot函數(shù)指定輸出參數(shù)(1,2,3,4,5的平方數(shù)列表)

import matplotlib.pyplot as plt
# pyplot模塊的plot函數(shù)可以接收輸入?yún)?shù)和輸出參數(shù),還有線條粗細(xì)等參數(shù),,例如下方的示例
squares = [1, 4, 9, 16, 25]
plt.plot(squares, linewidth=5)  # 這里只指定了一個(gè)列表,那么就當(dāng)作是輸出參數(shù),輸入?yún)?shù)從0開(kāi)始,就會(huì)發(fā)現(xiàn)沒(méi)有正確繪制數(shù)據(jù)
plt.title("Square Numbers", fontsize=24)  # 指定標(biāo)題,并設(shè)置標(biāo)題字體大小
plt.xlabel("Value", fontsize=14)  # 指定X坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.tick_params(axis='both', labelsize=14)  # 參數(shù)axis值為both,代表要設(shè)置橫縱的刻度標(biāo)記,標(biāo)記大小為14
plt.show()  # 打開(kāi)matplotlib查看器,并顯示繪制的圖形

運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
(2)plot函數(shù)指定輸入?yún)?shù)和輸出參數(shù)
我們知道,上面并沒(méi)有按照我們的意愿來(lái)繪制圖形,Y軸指定為[1,4,9,16,25],上面采用默認(rèn)輸入?yún)?shù)處理X軸變成[0,1,2,3,4]。X軸應(yīng)該對(duì)應(yīng)值為[1,2,3,4,5]才是我們的目的,所以我們必須同時(shí)指定輸入?yún)?shù)和輸出參數(shù)才行。觀察運(yùn)行結(jié)果圖的X軸變化了。

import matplotlib.pyplot as plt

# 我也可以指定輸入?yún)?shù)和輸出參數(shù),這樣就能按照我的意愿繪制圖形了
input_values = [1, 2, 3, 4, 5]  # 指定輸入?yún)?shù)
squares = [1, 4, 9, 16, 25]  # 指定輸出參數(shù)
plt.plot(input_values, squares, linewidth=5)  # 調(diào)用繪制函數(shù),傳入輸入?yún)?shù)和輸出參數(shù)
plt.title("Square Numbers", fontsize=24)  # 指定標(biāo)題,并設(shè)置標(biāo)題字體大小
plt.xlabel("Value", fontsize=14)  # 指定X坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.tick_params(axis='both', labelsize=14)  # 參數(shù)axis值為both,代表要設(shè)置橫縱的刻度標(biāo)記,標(biāo)記大小為14
plt.show()  # 打開(kāi)matplotlib查看器,并顯示繪制的圖形

運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)

利用pyplot模塊的scatter函數(shù)繪制散點(diǎn)圖

繪制散點(diǎn)圖只不過(guò)是繪制函數(shù)不同,從上面的plot變?yōu)閟catter,其他設(shè)置標(biāo)題、橫縱標(biāo)簽等的方式一樣。
(1)scatter函數(shù)繪制單個(gè)點(diǎn)

import matplotlib.pyplot as plt
plt.scatter(2, 4, s=200)  # 傳遞一對(duì)x和y坐標(biāo)。它將在指定位置繪制一個(gè)點(diǎn),參數(shù)s是設(shè)置繪制圖形時(shí)使用的點(diǎn)的尺寸
plt.title("Square Numbers", fontsize=24)  # 指定標(biāo)題,并設(shè)置標(biāo)題字體大小
plt.xlabel("Value", fontsize=14)  # 指定X坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.tick_params(axis='both', labelsize=14)  # 參數(shù)axis值為both,代表要設(shè)置橫縱的刻度標(biāo)記,標(biāo)記大小為14
plt.show()  # 打開(kāi)matplotlib查看器,并顯示繪制的圖形

運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
(2)scatter函數(shù)繪制一系列點(diǎn)

import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.scatter(x_values, y_values, s=100)  # 傳入兩個(gè)列表,列表x_values的元素作為x坐標(biāo),列表y_values的元素作為y坐標(biāo),兩個(gè)組合成一個(gè)點(diǎn)的坐標(biāo),所以一共有5個(gè)點(diǎn)
plt.title("Square Numbers", fontsize=24)  # 指定標(biāo)題,并設(shè)置標(biāo)題字體大小
plt.xlabel("Value", fontsize=14)  # 指定X坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.tick_params(axis='both', labelsize=14)  # 參數(shù)axis值為both,代表要設(shè)置橫縱的刻度標(biāo)記,標(biāo)記大小為14
plt.show()  # 打開(kāi)matplotlib查看器,并顯示繪制的圖形

運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
(3)自動(dòng)計(jì)算Y軸的數(shù)據(jù)
前面?zhèn)€兩個(gè)實(shí)例挺簡(jiǎn)單,但也只是我們自己定義的短列表,如果要繪制的點(diǎn)有很多,那么還手動(dòng)寫(xiě)當(dāng)然不實(shí)際,所以我們寫(xiě)一個(gè)根據(jù)我們指定的X軸的數(shù)據(jù),自動(dòng)計(jì)算Y軸的數(shù)據(jù)就省事很多了。

import matplotlib.pyplot as plt
x_values = list(range(1, 1001))  # 我們是利用range函數(shù)生成一個(gè)從1到1000的可迭代對(duì)象(不包括1001),然后強(qiáng)制轉(zhuǎn)換為列表
y_values = [x ** 2 for x in x_values]  # 這個(gè)語(yǔ)法是列表推導(dǎo)式,將x_values每個(gè)元素的值進(jìn)行平方再逐一放入列表,最后這個(gè)列表推導(dǎo)式返回整個(gè)列表
plt.scatter(x_values, y_values, s=40)  # 在2.0.0版本后的matplotlib中,scatter()函數(shù)的實(shí)參edgecolor(數(shù)據(jù)點(diǎn)的輪廓)默認(rèn)為'none',則刪除輪廓。
plt.title("Square Numbers", fontsize=24)  # 指定標(biāo)題,并設(shè)置標(biāo)題字體大小
plt.xlabel("Value", fontsize=14)  # 指定X坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.axis([0, 1100, 0, 1100000])  # 設(shè)置每個(gè)坐標(biāo)軸的取值范圍。其實(shí)最右側(cè)就是1100,但是沒(méi)有顯示標(biāo)簽而已
plt.show()  # 打開(kāi)matplotlib查看器,并顯示繪制的圖形

運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
注意, 在2.0.0版本后的matplotlib中scatter()函數(shù)的實(shí)參edgecolor(數(shù)據(jù)點(diǎn)的輪廓)不寫(xiě)則默認(rèn)為'none',代表刪除輪廓。也可以通過(guò)以下修改代碼:

plt.scatter(x_values, y_values, s=40, edgecolor='red')

上述修改后的代碼指定數(shù)據(jù)點(diǎn)輪廓的顏色為紅色,由于默認(rèn)點(diǎn)的顏色為藍(lán)色,所以你將會(huì)看到下面這樣,只有右上角是藍(lán)色,其他都是紅色,這是因?yàn)槔L制很多點(diǎn),紅色輪廓都粘連在一起了,所以看不出來(lái)。
修改代碼后運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
上面說(shuō)了默認(rèn)數(shù)據(jù)點(diǎn)的顏色為藍(lán)色,我們也可以通過(guò)參數(shù)c修改數(shù)據(jù)點(diǎn)的顏色,至于顏色值可以采用直接寫(xiě)顏色英文如'red'、'black'等,或者使用RGB顏色模式自定義顏色,這個(gè)自定義顏色設(shè)置為一個(gè)元組,其中包含三個(gè)0~1之間的小數(shù)值,它們分別表示紅色、綠色和藍(lán)色分量,如(0,0,0.8)??梢酝ㄟ^(guò)下面這樣修改代碼:

import matplotlib.pyplot as plt
x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, c=(0, 0.8, 0), s=40)  # 指定了c參數(shù),使用的是RGB顏色值方式
plt.title("Square Numbers", fontsize=24)  # 指定標(biāo)題,并設(shè)置標(biāo)題字體大小
plt.xlabel("Value", fontsize=14)  # 指定X坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.axis([0, 1100, 0, 1100000])  # 設(shè)置每個(gè)坐標(biāo)軸的取值范圍。其實(shí)最右側(cè)就是1100,但是沒(méi)有顯示標(biāo)簽而已
plt.show()  # 打開(kāi)matplotlib查看器,并顯示繪制的圖形

運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
(4)使用顏色映射和自動(dòng)保存圖表
照書(shū)上P294頁(yè)的使用顏色映射小節(jié)的描述對(duì)于初學(xué)者可能有點(diǎn)模棱兩可,這里采用我自己的代碼來(lái)理解什么是顏色映射,原理是什么。
測(cè)試代碼如下:

import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]  # 含x值的列表
y_values = [1, 4, 2, 6, 5]  # 含y值的列表
#  我們知道根據(jù)上面兩個(gè)列表,我們調(diào)用scatter可以繪制一系列的點(diǎn)
# 模塊pyplot內(nèi)置了一組顏色映射,通過(guò)設(shè)置c參數(shù)為y列表的值(這個(gè)y列表的是[1,2,3,4,5])然后利用參數(shù)cmap根據(jù)y列表的大小映射到由x_values和y_values組成的五個(gè)點(diǎn)從淺到深的顏色,可以看出y列表[1,2,3,4,5]分別映射到(1,1),(2,4),(3,2),(4,6),(5,5)五個(gè)點(diǎn),其中(1,1)點(diǎn)顏色最淺,(5,5)點(diǎn)顏色最深。
plt.scatter(x_values, y_values, c=[1, 2, 3, 4, 5], cmap=plt.cm.Blues, s=100)
plt.title("Square Numbers", fontsize=24)  # 指定標(biāo)題,并設(shè)置標(biāo)題字體大小
plt.xlabel("Value", fontsize=14)  # 指定X坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.savefig("3.png", bbox_inches='tight')  # 打開(kāi)matplotlib查看器,并顯示繪制的圖形
# 值的注意的是,要讓程序自動(dòng)將圖表保存到文件中,可將對(duì)plt.show()的調(diào)用替換為對(duì)plt.savefig()的調(diào)用。
# 如果指定了bbox_inches='tight'將圖表多余的空白區(qū)域裁剪掉,明顯更符合用戶需求,如果沒(méi)指定,生成的圖片顯示不出Y軸的標(biāo)簽。

運(yùn)行結(jié)果如下(需要注意,其實(shí)(1,1)點(diǎn)的位置還有一個(gè)非常淺藍(lán)色的點(diǎn),只是淺到看不到而已):
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
如果還不理解,那么你就修改以下測(cè)試代碼來(lái)運(yùn)行觀察:

plt.scatter(x_values, y_values, c=[1, 5, 3, 4, 5], cmap=plt.cm.Blues, s=100)

運(yùn)行結(jié)果如下(可以發(fā)現(xiàn)(2,4)點(diǎn)的顏色也變成深藍(lán)色了哦):
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
有了上面的理解基礎(chǔ),我們可以修改為書(shū)本源代碼,來(lái)觀察一下藍(lán)色彗星的殘影,哈哈O(∩_∩)O
書(shū)本源代碼:

import matplotlib.pyplot as plt
x_values = list(range(1,1001)) # 含x值的列表
y_values = [x ** 2 for x in x_values]  # 含y值的列表
#  我們知道根據(jù)上面兩個(gè)列表,我們調(diào)用scatter可以繪制一系列的點(diǎn)
# 根據(jù)y列表的值大小進(jìn)行顏色映射的,值大的顏色深,值小的顏色淺。如果y列表的值按順序,并且映射到按順序的點(diǎn),那么自然顏色也是從淺到深。
# 模塊pyplot內(nèi)置了一組顏色映射,通過(guò)設(shè)置c參數(shù)為y列表的值(這個(gè)y列表的是[1,2,3,4,5])然后利用參數(shù)cmap根據(jù)y列表的大小映射到由x_values和y_values組成的五個(gè)點(diǎn)從淺到深的顏色,可以看出y列表[1,2,3,4,5]分別映射到(1,1),(2,4),(3,2),(4,6),(5,5)五個(gè)點(diǎn),其中(1,1)點(diǎn)顏色最淺,(5,5)點(diǎn)顏色最深。
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=40)
plt.title("Square Numbers", fontsize=24)  # 指定標(biāo)題,并設(shè)置標(biāo)題字體大小
plt.xlabel("Value", fontsize=14)  # 指定X坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐標(biāo)軸的標(biāo)簽,并設(shè)置標(biāo)簽字體大小
plt.savefig("3.png", bbox_inches='tight')  # 打開(kāi)matplotlib查看器,并顯示繪制的圖形

運(yùn)行結(jié)果圖如下(藍(lán)色彗星殘影):
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)

利用pyplot模塊的scatter函數(shù)繪制隨機(jī)漫步圖

套用書(shū)本原話來(lái)說(shuō),隨機(jī)漫步:每次行走都完全是隨機(jī)的,沒(méi)有明確的方向,結(jié)果是由一系列隨機(jī)決策決定的。
為了實(shí)現(xiàn)隨機(jī)漫步,需要做以下幾步就可以完成:
1.創(chuàng)建RandomWalk類來(lái)生成隨機(jī)漫步數(shù)據(jù)
2.利用獲取的隨機(jī)漫步數(shù)據(jù)繪制隨機(jī)漫步圖
3.模擬多次隨機(jī)漫步
4.設(shè)置隨機(jī)漫步圖的樣式
(1)創(chuàng)建RandomWalk類來(lái)生成隨機(jī)漫步數(shù)據(jù)
在項(xiàng)目里創(chuàng)建一個(gè)random_walk.py文件,該文件代碼如下:

from random import choice

# 一個(gè)生成隨機(jī)漫步數(shù)據(jù)的類
class RandomWalk:
    # 默認(rèn)為5000個(gè)點(diǎn),代表5000步
    def __init__(self, num_points=5000):
        self.num_points = num_points
        self.x_values = [0]
        self.y_values = [0]

        # 獲取隨機(jī)方向和步數(shù)的乘積
    def get_step(self):
        return choice([1, -1]) * choice([0, 1, 2, 3, 4])

    def fill_walk(self):
        while len(self.x_values) < self.num_points:
                    # 獲取往哪個(gè)方向走幾步
            x_step = self.get_step()
            y_step = self.get_step()

                        # 如果原地踏步則continue處理
            if x_step == 0 and y_step == 0:
                continue

                        # 計(jì)算下一步走的位置
            next_x = self.x_values[-1] + x_step
            next_y = self.y_values[-1] + y_step
                        # 將下一次走的位置保存在列表中
            self.x_values.append(next_x)
            self.y_values.append(next_y)

(2)利用獲取的隨機(jī)漫步數(shù)據(jù)繪制隨機(jī)漫步圖
在項(xiàng)目里創(chuàng)建一個(gè)rw_visual.py文件,該文件代碼如下:

import matplotlib.pyplot as plt
from random_walk import RandomWalk

# 創(chuàng)建一個(gè)RandomWalk實(shí)例,并指定走5000步
rw = RandomWalk(5000)
rw.fill_walk()  # 開(kāi)始獲取隨機(jī)漫步數(shù)據(jù),其實(shí)獲取的是兩個(gè)包含x和y值的數(shù)據(jù)點(diǎn)列表
plt.scatter(rw.x_values, rw.y_values, s=15)
plt.show()

運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
(3)模擬多次隨機(jī)漫步
在rw_visual.py文件代碼上加以修改,修改代碼如下:

import matplotlib.pyplot as plt
from random_walk import RandomWalk

while True:
    rw = RandomWalk(5000)
    rw.fill_walk()
    plt.scatter(rw.x_values, rw.y_values,s=15)
    plt.show()

    keep_running = input("Make another walk?(y/n):")
    if keep_running == 'n':
        break

運(yùn)行結(jié)果如下(你點(diǎn)擊右上角關(guān)閉按鈕,在PyCharm下方會(huì)彈出詢問(wèn)是否繼續(xù)漫步):
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)
(4)設(shè)置隨機(jī)漫步圖的樣式
我們將設(shè)置隨機(jī)漫步圖的樣式,定制一個(gè)好看的隨機(jī)漫步圖,有給點(diǎn)著色、重新繪制起點(diǎn)和終點(diǎn)、隱藏坐標(biāo)軸、調(diào)整尺寸以適合屏幕。

import matplotlib.pyplot as plt
from random_walk import RandomWalk

while True:
    rw = RandomWalk(5000)
    rw.fill_walk()

    plt.figure(figsize=(20, 6))
    # 顏色映射就是用列表賦值給c,而這個(gè)列表的值可以隨意,大的代表顏色深,小的代表顏色淺。
    point_number = list(range(rw.num_points))  # [0-4999]
    plt.scatter(rw.x_values, rw.y_values, c=point_number, cmap=plt.cm.Blues, s=4)
    # 突出起點(diǎn)和終點(diǎn),點(diǎn)變大,用不同顏色來(lái)顯示起點(diǎn)和終點(diǎn)
    plt.scatter(0, 0, c='green', s=100)
    plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', s=100)

    # 隱藏坐標(biāo)軸
    plt.axes().get_xaxis().set_visible(False)
    plt.axes().get_yaxis().set_visible(False)

    plt.show()

    keep_running = input("Make another walk?(y/n):")
    if keep_running == 'n':
        break

運(yùn)行結(jié)果如下:
談?wù)凱ython實(shí)戰(zhàn)數(shù)據(jù)可視化之matplotlib模塊(基礎(chǔ)篇)

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI