欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python數(shù)據(jù)分析之Matplotlib數(shù)據(jù)可視化

 更新時(shí)間:2022年08月01日 12:02:51   投稿:hqx  
這篇文章主要介紹了Python數(shù)據(jù)分析之Matplotlib數(shù)據(jù)可視化,Matplotlib?是?Python?中常用的?2D?繪圖庫,它能輕松地將數(shù)據(jù)進(jìn)行可視化,作出精美的圖表

1.前言

數(shù)據(jù)展示,即數(shù)據(jù)可視化,是數(shù)據(jù)分析的第五個(gè)步驟,大部分人對(duì)圖形敏感度高于數(shù)字,好的數(shù)據(jù)展示方式能讓人快速發(fā)現(xiàn)問題或規(guī)律,找到數(shù)據(jù)背后隱藏的價(jià)值。

2.Matplotlib概念

Matplotlib 是 Python 中常用的 2D 繪圖庫,它能輕松地將數(shù)據(jù)進(jìn)行可視化,作出精美的圖表。Matplotlib 模塊很龐大,其中最常用的一個(gè)子模塊是 pyplot,通常以一下方式將其導(dǎo)入:

 import matplotlib.pyplot as plt

 因?yàn)樵诔绦蛑薪?jīng)常使用,所以給 matplotlib.pyplot 起了個(gè)別名plt,以減少大量重復(fù)代碼

3.Matplotlib.pyplot基本使用

pyplot 中最基礎(chǔ)的作圖方式是以點(diǎn)作圖,即給出每個(gè)點(diǎn)的坐標(biāo),pyplot 會(huì)將這些點(diǎn)在坐標(biāo)系中畫出,并用線將這些點(diǎn)連起來。以正弦函數(shù)為例,用 pyplot 畫出圖像:

代碼段1:

 import numpy as np
 import matplotlib.pyplot as plt
 ?
 x = np.arange(0,2*np.pi,0.1) #生成一個(gè)0到2pi、步長(zhǎng)為0.1的數(shù)組x
 y = np.sin(x) #將x的值傳入正弦函數(shù),得到對(duì)應(yīng)的值存入數(shù)組y
 plt.plot(x,y) #傳入plt.plot(),將x,y轉(zhuǎn)換成對(duì)應(yīng)坐標(biāo)。
 plt.show() #顯示圖像

上面程序畫出了以下圖像:

注:選擇x的步長(zhǎng)為0.1是為了讓每個(gè)點(diǎn)間隔較小,讓圖像更加接近真實(shí)情況,否則如果步長(zhǎng)過大,則會(huì)變成折線,若步長(zhǎng)為1則會(huì)變成以下情況:

除了 np.sin()方法外,numpy 中也有 np.cos()、np.tan()等計(jì)算三角函數(shù)的方法。上面這些方法,最重要的是 plt.plot()方法,plt.plot()方法可以接收任意對(duì)數(shù)的 x 和 y ,它會(huì)將這些圖像在一張圖上都畫出來,例如在原來的正弦圖像上增加余弦圖像,可以這樣寫:

 import numpy as np
 import matplotlib.pyplot as plt
 ?
 x = np.arange(0,2*np.pi,0.1) #生成一個(gè)0到2pi,步長(zhǎng)為0.1的數(shù)組x
 y1 = np.sin(x) #將x的值傳入正弦函數(shù),得到對(duì)應(yīng)的值存入數(shù)組y1
 y2 = np.cos(x) #將x的值傳入余弦函數(shù),得到對(duì)應(yīng)的值存入數(shù)組y1
 plt.plot(x,y1,x,y2) #傳入plt.plot(),將(x,y1)、(x,y2)轉(zhuǎn)換成對(duì)應(yīng)坐標(biāo)。
 plt.show() #顯示圖像

 以上程序公用了同一個(gè)x,當(dāng)然也可以重新定義一個(gè)新的 x,最終得到的圖像如下:

代碼段2使用一次 plt.plot()方法直接將兩個(gè)數(shù)字轉(zhuǎn)換 成對(duì)應(yīng)坐標(biāo),當(dāng)然也可以調(diào)用兩次,以下兩行代碼和上面第7行代碼是等價(jià)的。

 plt.plot(x,y1)
 plt.plot(x,y2)

對(duì)每一對(duì) x 和 y,有一個(gè)可選格式化參數(shù),進(jìn)行指定線條的顏色、點(diǎn)標(biāo)記和線條的類型。

代碼段3:

 import numpy as np
 import matplotlib.pyplot as plt
 ?
 x = np.arange(0,2*np.pi,0.1) #生成一個(gè)0到2pi,步長(zhǎng)為0.1的數(shù)組x
 y1 = np.sin(x) #將x的值傳入正弦函數(shù),得到對(duì)應(yīng)的值存入數(shù)組y1
 y2 = np.cos(x) #將x的值傳入余弦函數(shù),得到對(duì)應(yīng)的值存入數(shù)組y1
 plt.plot(x,y1,'ro--',x,y2,'b*-.') #將(x,y1)、(x,y2)轉(zhuǎn)換成對(duì)應(yīng)坐標(biāo),并選用格式化參數(shù)
 plt.show() #顯示圖像

將代碼段2傳入了格式化參數(shù)后,最終圖像如下所示:

以其中的參數(shù)'ro--'為例,它分為三部分:r 代表紅色(red),o 代表在坐標(biāo)點(diǎn)采用圓點(diǎn)標(biāo)記,-- 代表虛線。'ro--'整體來說就是線條為虛線、坐標(biāo)點(diǎn)標(biāo)記為圓點(diǎn)。格式化參數(shù)這三部分都是可選的,即傳入一部分也是可以的,并且沒有順序要求,

格式化參數(shù)常用的選型及含義如下表所示:

3.數(shù)據(jù)展示

3.1如何選擇展示方式

我們通過數(shù)據(jù)分析來進(jìn)行決策,那么使用合適的圖表來準(zhǔn)確地展示數(shù)據(jù)是至關(guān)重要的。實(shí)際使用中,我們會(huì)用到各種各樣地幾十種圖表,按照數(shù)據(jù)展示的目標(biāo)可以把它們分為五種,分別是:趨勢(shì)、比較、構(gòu)成、分布和聯(lián)系。

  • 趨勢(shì):最常見的一種時(shí)間序列關(guān)系,關(guān)心數(shù)據(jù)如何隨時(shí)間變化,趨勢(shì)里的圖標(biāo)能直觀反映出每年、每月、每天的變化趨勢(shì),增長(zhǎng)、減少、上下波動(dòng)還是基本不變,最常見的是折線圖,它能很好地表現(xiàn)指標(biāo)隨時(shí)間呈現(xiàn)的趨勢(shì)。
  • 構(gòu)成:主要關(guān)注每個(gè)部分整體的占比,如果逆向分析的目標(biāo)如“份額”、“百分比”等。展示構(gòu)成關(guān)系的圖表類型,最常見的是餅圖。
  • 比較:可以展示某個(gè)維度上的排列順序,分析某維度之間的對(duì)比是差不多,還是“大于”、“小于”,比如分析男生和女生的身高差別。
  • 分布:當(dāng)你關(guān)心數(shù)據(jù)集中,頻率、分布時(shí),比如根據(jù)地理位置數(shù)據(jù),通過地圖來展示不同分布特征。比較常用的圖表有地圖、直方圖、散點(diǎn)圖。
  • 聯(lián)系:主要查看兩個(gè)變量之間是否表達(dá)出我們所要證明的相關(guān)關(guān)系,比如預(yù)期銷售額可能隨著優(yōu)惠折扣的增長(zhǎng)而增長(zhǎng),常用于表打“與......有關(guān)”、“隨......而增長(zhǎng)”、“隨......而不同”等維度的關(guān)系。

在進(jìn)行數(shù)據(jù)可視化時(shí),要先明確分析的目標(biāo),再來選擇五種合適的分類,最后選擇某個(gè)分類里合適的圖表類型。

3.2繪制折線圖

其實(shí)在前面已經(jīng)用過折線圖了,就是使用 plot.plot() 方法。之前我們傳入的時(shí)x和y坐標(biāo)點(diǎn),而折線圖的 x 和 y 分別是時(shí)間點(diǎn)和對(duì)應(yīng)的數(shù)據(jù),下面以兩個(gè)商品的銷量走勢(shì)為例:

import numpy as np
import matplotlib.pyplot as plt
 
x = ['周一','周二','周三','周四','周五','周六','周日']
y1 = [61,42,52,72,86,91,73]
y2 = [23,26,67,38,46,55,33]
#傳入label參數(shù)
plt.rcParams['font.family'] = ['SimHei'] #設(shè)置字體防止亂碼
plt.plot(x, y1, label='商品A') #增加折線圖例“商品A”
plt.plot(x, y2, label='商品B') #增加折線圖例“商品B”
#設(shè)置x軸標(biāo)簽
plt.xlabel('時(shí)間')
plt.ylabel('銷量')
#設(shè)置圖表標(biāo)題
plt.title('商品銷量對(duì)比圖')
#顯示圖例、圖像
plt.legend(loc='best') #顯示圖例,并設(shè)置在“最佳位置”
plt.show()

得到的圖像如下圖所示:

因?yàn)樯蠄D中有中文,所以通過 plt.rcParams['font.family'] = ['SimHei'] 來設(shè)置中文字體來防止亂碼,如果想設(shè)置其他字體只需將 SimHei(黑體)替換成相應(yīng)的名稱即可。通過一下代碼獲得,自己編譯器所在環(huán)境安裝的字體:

import matplotlib.font_manager as fm
for font in fm.fontManager.ttflist:
    print(font.name)

 圖例位置是一個(gè)可選參數(shù),默認(rèn) matplotlib 會(huì)自動(dòng)選擇合適位置,也可以指定其他位置。

具體的如下表所示:

plt.legend() 方法的 loc 參數(shù)選擇 參數(shù)含義參數(shù)含義best最佳位置center居中upper right右上角center right靠右居中upper left左上角center left靠左居中lower left左下角lower center靠下居中lower right右下角upper center靠上居中

3.3繪制柱狀圖

柱狀圖描述的是分類數(shù)據(jù),展示的是每一類的數(shù)量。柱狀圖分為很多種,有普通柱狀圖、堆疊柱狀圖、分組柱狀圖等。

3.3.1普通柱狀圖

 普通柱狀圖調(diào)用 plt.bar() 方式實(shí)現(xiàn)。我們至少需要傳入兩個(gè)參數(shù),第一個(gè)參數(shù)是 x 軸上刻度的標(biāo)簽序列(列表、元組、數(shù)組等),第二個(gè)參數(shù)用于指定每個(gè)柱子的高度,也就是具體的數(shù)據(jù)。下面以一個(gè)班級(jí)體育課選課的情況為例:

import matplotlib.font_manager as fm
for font in fm.fontManager.ttflist:
    print(font.name)

 得到如下圖像:

 plt.bar() 前兩個(gè)參數(shù)是必選的,當(dāng)然還有一些可選參數(shù),常用的有 width 和 color ,分別是用于設(shè)置柱子的寬度(默認(rèn)0.8)和顏色。比如我們將柱子寬度改成0.6,將柱子的顏色設(shè)成好看的天藍(lán)色只需將 plt.bar() 改為 plt.bar(names, nums, width=0.6, color='skyblue') 即可。之前在折線圖部分用到的 plt.xlabel() 、plt.ylabel() 、plt.title() 和 plt.legend() 方法都是通用方法,并不局限于一種圖表,所有的圖表都適用。

3.3.2堆疊柱狀圖

 柱狀圖能直觀地展現(xiàn)出不同數(shù)據(jù)上的差異,但有時(shí)候我們需要進(jìn)一步分析數(shù)據(jù)的分布,比如每門選修課的男女比例,這時(shí)就需要用到堆疊柱狀圖。

下面就是進(jìn)一步分析每一門選修課中男女比例為例編寫程序:

import numpy as np
import matplotlib.pyplot as plt
 
plt.rcParams['font.family'] = ['SimHei'] #設(shè)置字體防止亂碼
name = ['乒乓球','羽毛球','網(wǎng)球']
nums_boy = [16,5,11]
nums_girl = [10,15,8]
 
plt.bar(name, nums_boy, width=0.6, color='skyblue', label='男')
plt.bar(name, nums_girl, bottom=nums_boy, width=0.6, color='pink', label='女')
plt.legend()
plt.show()

最終得到圖像:

上面的代碼和普通柱狀圖相比,多調(diào)用了一次,plt.bar() 方法,并傳入了 bottom 參數(shù),每調(diào)用一次 plt.bar() 方法都會(huì)畫出對(duì)應(yīng)的柱狀圖,而 bottom 參數(shù)作用就是控制柱狀圖低端的位置。我們將前一個(gè)柱狀圖的高度傳進(jìn)去,這樣就形成了堆疊柱狀圖。而如果沒有 bottom 參數(shù),后面的圖形會(huì)蓋在原來的圖形之上,

就像下面這樣:

3.3.3分組柱狀圖

分組柱狀圖經(jīng)常用于不同組間數(shù)據(jù)的比較,這些組都包含了相同分類的數(shù)據(jù)。

先來看一下效果圖:

 繪制上圖的代碼如下:

import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(3)
width = 0.3
 
names = ['籃球', '羽毛球', '乒乓球']
nums_boy = [16, 5, 11]
nums_girl = [10, 15, 8]
plt.rcParams['font.family'] = ['SimHei'] #設(shè)置字體防止亂碼
plt.bar(x - width / 2, nums_boy, width=width, color='skyblue', label='男')
plt.bar(x + width / 2, nums_girl, width=width, color='pink', label='女')
plt.xticks(x, names)
plt.legend()
plt.show()

這次的方法和之前有些不同,首先使用 np.arange(3) 方法創(chuàng)建了一個(gè)數(shù)組 x ,值為[0,1,2]。并定義了一個(gè)變量 width 用于指定柱子的寬度。在調(diào)用 plt.bar() 時(shí),第一個(gè)參數(shù)不再是刻度線上的標(biāo)簽,而是對(duì)應(yīng)的刻度。以[0,1,2]為基準(zhǔn),分別加上或減去柱子的寬度得到[-0.15,0.85,1,85]和[0.15,1.15,2.15],這些刻度將分別作為兩組柱子的中點(diǎn),并且柱子的寬度為0.3。

因?yàn)閭魅氲氖强潭?,而不是刻度的?biāo)簽。所以調(diào)用 plt.xticks() 方法來將 x 軸上刻度改為對(duì)應(yīng)的標(biāo)簽,該方法第一個(gè)參數(shù)時(shí)要改的刻度序列,第二個(gè)參數(shù)時(shí)與之對(duì)于的標(biāo)簽序列。同理,使用plt.yticks() 方法來更改y軸上刻度的標(biāo)簽。

3.3.4餅圖

餅圖廣泛地應(yīng)用在各個(gè)領(lǐng)域,用于表示不同分類的占比情況,通過弧度大小來對(duì)比各種分類。餅圖通過將一個(gè)圓餅按照分類的占比劃分成多個(gè)區(qū)塊,整個(gè)圓餅代表數(shù)據(jù)的總量,每個(gè)區(qū)塊(圓?。┍硎驹摲诸愓伎傮w的比例大小,所有區(qū)塊(圓?。┑募雍偷扔?00%。

 餅圖的繪制很簡(jiǎn)單,只需要傳入數(shù)據(jù)和對(duì)于的標(biāo)簽給 plt.pie() 方法即可。以2018年國(guó)內(nèi)生產(chǎn)總值(GDP)三大產(chǎn)業(yè)的占比為例,可以畫出這樣的餅圖:

繪制上圖的代碼如下:

import matplotlib.pyplot as plt
 
plt.rcParams['font.family'] = ['SimHei'] #設(shè)置字體防止亂碼
data = [64745.2, 364835.2, 489700.8]
labels = ['第一產(chǎn)業(yè)', '第二產(chǎn)業(yè)', '第三產(chǎn)業(yè)']
explode = (0.1, 0, 0)
plt.pie(data, explode=explode, labels=labels,autopct='%0.1f%%')
plt.show()

 plt.pie() 方法的第一個(gè)參數(shù)是繪圖需要的數(shù)據(jù);參數(shù) explode 是可選參數(shù),用于突出顯示某一區(qū)塊,默認(rèn)數(shù)值都是0,數(shù)值越大,區(qū)塊抽離越明顯;參數(shù) lables 是數(shù)據(jù)對(duì)應(yīng)的標(biāo)簽;參數(shù) autopct 則給餅圖自動(dòng)添加百分比顯示。

參數(shù) autopct 的格式用到了字符串格式化輸出的知識(shí),代碼中 '%0.1f%%' 可以分成兩部分。一部分是 %0.1f 表示保留一位小數(shù),同理 %0.2f 表示保留兩位小數(shù);另一部分是 %% ,它表示輸出一個(gè) %,因?yàn)? 在字符串格式化輸出中有特殊的含義,所以想要輸出 % 就得寫成 %% 。所以,'%0.1f%%' 的含義是保留一位小數(shù)的百分?jǐn)?shù),例如:66.6%。

4.繪制子圖

Matplotlib 提供了子圖的概念,通過使用子圖,可以在一張圖里繪制多個(gè)圖表。在 matplotlib 中,調(diào)用 plt.subplot()法來添加子圖。plt.subplot() 方法的前兩個(gè)參數(shù)分別是子圖的行數(shù)和列數(shù),第三個(gè)參數(shù)是子圖的序號(hào)(從1開始)。

ax1 = plt.subplot(2, 2, 1)
ax2 = plt.subplot(2, 2, 2)
ax3 = plt.subplot(2, 2, 3)
ax4 = plt.subplot(2, 2, 4)

 plt.subplot(2,2,1) 的作用是生成一個(gè)兩行兩列的子圖,并選擇其中序號(hào)為1的子圖,所以上面四行代碼將一張圖分成了4個(gè)子圖,并用1、2、3、4來選擇對(duì)應(yīng)的子圖。

我們也可以繪制不規(guī)則的子圖,比如上面兩張子圖,下面一張子圖。

方法如下:

ax1 = plt.subplot(2, 2, 1)
ax2 = plt.subplot(2, 2, 2)
ax3 = plt.subplot(2, 1, 2)

之所以第三行代碼是 plt.subplot(2, 1, 2) ,因?yàn)樽訄D序號(hào)是獨(dú)立的,與之前創(chuàng)建的子圖沒有關(guān)系。plt.subplot(2, 2, 1) 選擇并展示了2*2的子圖中的第一個(gè)。plt.subplot(2, 2, 2) 選擇并展示了2*2的子圖中的第二個(gè),它們兩個(gè)合起來占了2*2子圖的第一行。而 plt.subplot(2, 1, 2) 則是生成了兩行一列的子圖,并選擇了第二行。即占滿第二行的子圖,正好填補(bǔ)了之前2*2子圖第二行剩下的空間,因此生成的圖表是這樣的:

圖表的框架畫好了,就可以往里面填充圖像了,之前調(diào)用的是 plt 上的方法繪圖,只要將其改成 plt.subplot() 方法的返回值上調(diào)用相應(yīng)的方法繪圖即可。

舉個(gè)栗子,下面是在一張圖上繪制了 sin、cos 和 tan 三個(gè)函數(shù)的圖像的代碼:

import numpy as np
import matplotlib.pyplot as plt
 
plt.rcParams['font.family'] = ['SimHei'] #設(shè)置字體防止亂碼
 
x = np.arange(0, 2 * np.pi, 0.1)
 
plt.suptitle('三角函數(shù)可視化')
ax1 = plt.subplot(2,2,1)
ax1.set_title('sin函數(shù)')
y1 = np.sin(x)
ax1.plot(x,y1)
 
ax2 = plt.subplot(2,2,2)
ax2.set_title('cos函數(shù)')
y2 = np.cos(x)
ax2.plot(x,y2)
 
ax3 = plt.subplot(2,1,2)
ax3.set_title('tan函數(shù)')
y3 = np.tan(x)
ax3.plot(x,y3)
 
plt.show()

得到的圖像是:

上面程序中,使用 set_title() 方法為每個(gè)子圖設(shè)置單獨(dú)的標(biāo)題。需要注意的是,如果想要給帶有子圖的圖表設(shè)置總的標(biāo)題的話,不是使用的 plt.titie() 方法,而是通過 plt.suptitile() 方法來設(shè)置帶有子圖的圖表標(biāo)題。 

到此這篇關(guān)于Python數(shù)據(jù)分析之Matplotlib數(shù)據(jù)可視化的文章就介紹到這了,更多相關(guān)Python Matplotlib數(shù)據(jù)可視化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入了解Python并發(fā)編程

    深入了解Python并發(fā)編程

    讓計(jì)算機(jī)程序并發(fā)的運(yùn)行是一個(gè)經(jīng)常被討論的話題,這篇文章將具體介紹一下Python下的各種并發(fā)方式。感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-01-01
  • 解決pytorch 損失函數(shù)中輸入輸出不匹配的問題

    解決pytorch 損失函數(shù)中輸入輸出不匹配的問題

    這篇文章主要介紹了解決pytorch 損失函數(shù)中輸入輸出不匹配的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • TensorFlow實(shí)現(xiàn)指數(shù)衰減學(xué)習(xí)率的方法

    TensorFlow實(shí)現(xiàn)指數(shù)衰減學(xué)習(xí)率的方法

    這篇文章主要介紹了TensorFlow實(shí)現(xiàn)指數(shù)衰減學(xué)習(xí)率的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 如何在Python3中使用telnetlib模塊連接網(wǎng)絡(luò)設(shè)備

    如何在Python3中使用telnetlib模塊連接網(wǎng)絡(luò)設(shè)備

    這篇文章主要介紹了如何在Python3中使用telnetlib模塊連接網(wǎng)絡(luò)設(shè)備,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python中的數(shù)據(jù)結(jié)構(gòu)比較

    python中的數(shù)據(jù)結(jié)構(gòu)比較

    這篇文章主要介紹了python中的數(shù)據(jù)結(jié)構(gòu)比較,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • python正則分析nginx的訪問日志

    python正則分析nginx的訪問日志

    最近工作中遇到一個(gè)需求,是要分析nginx的訪問日志,覺著利用python來實(shí)現(xiàn)比較合適,所以下面這篇文章主要介紹了利用python正則如何分析nginx的訪問日志,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • python實(shí)現(xiàn)按任意鍵繼續(xù)執(zhí)行程序

    python實(shí)現(xiàn)按任意鍵繼續(xù)執(zhí)行程序

    本文給大家分享的是如何使用Python腳本實(shí)現(xiàn)按任意鍵繼續(xù)執(zhí)行程序的代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2016-12-12
  • python封裝對(duì)象實(shí)現(xiàn)時(shí)間效果

    python封裝對(duì)象實(shí)現(xiàn)時(shí)間效果

    這篇文章主要為大家詳細(xì)介紹了python封裝對(duì)象實(shí)現(xiàn)時(shí)間效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2010-10-10
  • python numpy存取文件的方式

    python numpy存取文件的方式

    NumPy提供了多種存取數(shù)組內(nèi)容的文件操作函數(shù)。保存數(shù)組數(shù)據(jù)的文件可以是二進(jìn)制格式或者文本格式。這篇文章主要介紹了python利用numpy存取文件,需要的朋友可以參考下
    2019-09-09
  • Python 中下劃線的幾種用法(_、_xx、xx_、__xx、__xx__)

    Python 中下劃線的幾種用法(_、_xx、xx_、__xx、__xx__)

    本文主要介紹了Python 中下劃線的幾種用法(_、_xx、xx_、__xx、__xx__),詳細(xì)的介紹了這幾種下劃線的用處,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論