日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

一篇文章让你学会绘画十一种常见数据分析图(折线图,直方图,散点图,雷达图等等)

發(fā)布時(shí)間:2024/3/24 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一篇文章让你学会绘画十一种常见数据分析图(折线图,直方图,散点图,雷达图等等) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本篇博文主要內(nèi)容ython Pyplot中的十一個(gè)常用繪圖,包括參數(shù)說(shuō)明,代碼,運(yùn)行結(jié)果。
有問(wèn)題可以+Q180096010一起交流學(xué)習(xí)~

目錄

?1. 折線圖

plt.plot繪制折線圖代碼展示:

2. 散點(diǎn)圖

scatter繪圖示例1:

3. 直方圖?

bar繪圖示例1:

bar繪圖示例2:

4. 餅圖

pie繪圖示例:

5. 箱線圖?

boxplot繪圖示例:

6.概率圖?

繪制概率圖:

7.雷達(dá)圖?

繪制某學(xué)生成績(jī)信息的雷達(dá)圖

8.流向圖?

流向圖繪制

9.繪圖中的表格設(shè)置?

在繪圖中顯示數(shù)據(jù)表格

10. 極坐標(biāo)圖?

繪制極坐標(biāo)圖

11. 詞云圖?

11.1 安裝相關(guān)的包

11.2 詞云生成過(guò)程

?11.3 詞云生成示例:

結(jié)尾:


?1. 折線圖

折線圖(Line Chart)是一種將數(shù)據(jù)點(diǎn)按照順序連接起來(lái)的圖形,也可以看作是將散點(diǎn)圖按照X軸坐標(biāo)順序鏈接起來(lái)的圖形。折線圖的主要功能是查看因變量y隨著自變量x改變的趨勢(shì),最適合用于顯示隨時(shí)間(根據(jù)常用比例設(shè)置)而改變的連續(xù)數(shù)據(jù)。同時(shí),還可以看出數(shù)量的差異

繪制折線圖plot的格式:

?

matplotlib.pyplot.plot(*args,**kwargs)

plot函數(shù)在官方文檔的語(yǔ)法中只要求填入不定長(zhǎng)參數(shù),實(shí)際可以填入的主要參數(shù)及其說(shuō)明見(jiàn)下表1

表1 plot主要參數(shù)及其說(shuō)明

參數(shù) 說(shuō)明 x,y 接收array,表示X軸和Y軸對(duì)應(yīng)的數(shù)據(jù),無(wú)默認(rèn) color 接收特定string,指定線條的顏色,默認(rèn)為None linestyle 接收特定string,指定線條的類型,默認(rèn)為“-” marker 接收特定的string,表示繪制的點(diǎn)的類型,默認(rèn)為None alpha

接收0~1的小數(shù),表示點(diǎn)的透明度,默認(rèn)為None


?
color參數(shù)的8種常用的縮寫見(jiàn)表2 表2 color參數(shù)的常用顏色縮寫
顏色縮寫代表的顏色
b藍(lán)色
g綠色
r紅色
c青色
m品紅
y黃色
k黑色
w白色

?

plt.plot繪制折線圖代碼展示:
?

import matplotlib.pyplot as plt import numpy as np %matplotlib inline x = np.arange(9) y = np.sin(x) z = np.cos(x) #marker數(shù)據(jù)點(diǎn)樣式,linewidth線寬,linestyle線型樣式,color顏色 plt.plot(x,y,marker='*',linewidth=1,linestyle='--',color='orange') plt.plot(x,z) plt.title('matplotlib AK') plt.xlabel('height',fontsize=15) plt.ylabel('width',fontsize=15) #設(shè)置圖例 plt.legend(['Y','Z'],loc='upper right') plt.grid(True) plt.show()

?

2. 散點(diǎn)圖

? ? ? ? 散點(diǎn)圖(Scatter Diagram)又稱為散點(diǎn)分布圖,是以一個(gè)特征為橫坐標(biāo),另一個(gè)特征為縱坐標(biāo),使用坐標(biāo)點(diǎn)(散點(diǎn))的分布形態(tài)反映特征間統(tǒng)計(jì)關(guān)系的一種圖形。值時(shí)由點(diǎn)在圖表中的位置表示,類別是由圖表中的不同標(biāo)記表示 ,通常用于比較跨類別的數(shù)據(jù)

? ? ? ? scatter方法的格式:

? ? ? ? matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,alpha=None)

? ? ? ? scatter函數(shù)主要參數(shù)及其說(shuō)明見(jiàn)表3
?

scatter的主要參數(shù)及其說(shuō)明
參數(shù)說(shuō)明
x,y接收array,表示X軸和Y軸對(duì)應(yīng)的數(shù)據(jù),無(wú)默認(rèn)
s

接收數(shù)值或一維的array,指定點(diǎn)的大小,若傳入一維array則表示每個(gè)點(diǎn)的大小,默認(rèn)為None

c接收顏色或一維的array,指定點(diǎn)的顏色,若傳入一維array則表示每個(gè)點(diǎn)的顏色,默認(rèn)為None
marker接收特定的string,表示繪制的點(diǎn)的類型,默認(rèn)為None
alpha接收0~1的小數(shù),表示點(diǎn)的透明度,默認(rèn)為None





?

scatter繪圖示例1:

fig.ax = plt.subplots() plt.rcParams['font.family'] = ['SimHei'] #用來(lái)顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus'] = False #用來(lái)正常顯示符號(hào) x1 = np.arange(1,30) y1 = np.sin(x1) ax1 = plt.subplot(1,1,1) plt.title('散點(diǎn)圖 AK') plt.xlabel('X') plt.ylabel('Y') lvalue = x1 ax1.scatter(x1,y1,c='r',s=100,linewidths=lvalue,marker='o') plt.legend('x1') plt.show()

?scatter繪圖示例2:

fig,ax = plt.subplots() plt.rcParams['font.family'] = ['SimHei'] #用來(lái)顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus'] = False #用來(lái)正常顯示符號(hào) for color in ['red','green','blue']:n = 500x,y = np.random.randn(2,n)ax.scatter(x,y,c=color,label=color,alpha=0.3,edgecolor='none') ax.legend() ax.grid(True) plt.show()

??

3. 直方圖?

? ? ? ? 直方圖(Histogram)又稱質(zhì)量分布圖,是統(tǒng)計(jì)報(bào)告圖的一種,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況,一般用橫軸表示數(shù)據(jù)所屬類別,縱軸表示數(shù)量或者占比。用直方圖可以比較直觀地看出產(chǎn)品質(zhì)量特性的分布狀態(tài),便于判斷其總體質(zhì)量分布情況。直方圖可以發(fā)現(xiàn)分布表無(wú)法發(fā)現(xiàn)的數(shù)據(jù)模式、樣本的頻率分布和總體的分布。

繪制直方圖函數(shù)bar格式:

matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None)

函數(shù)bar的常用參數(shù)及其說(shuō)明見(jiàn)下表4

表4 bar常用參數(shù)及其說(shuō)明
參數(shù)說(shuō)明
left接收array,表示X軸數(shù)據(jù),無(wú)默認(rèn)
height接收array,表示X軸所代表數(shù)據(jù)的數(shù)量,無(wú)默認(rèn)

width

接收0~1的float,指定直方圖寬度,默認(rèn)為0.8
color接收特定string或者包含顏色字符串的array,表示直方圖顏色,默認(rèn)為None











?

bar繪圖示例1:

import pandas as pd import matplotlib.pyplot as plt import numpy as np fig,axes = plt.subplots(2,1) data = pd.Series(np.random.randn(16),index=list('abcdefghijklmnop')) data.plot.bar(ax = axes[0],color='k',alpha=0.7) data.plot.barh(ax = axes[1],color='k',alpha=0.7)

bar繪圖示例2:

import pandas as pd import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.family'] = ['SimHei'] #用來(lái)顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus'] = False #用來(lái)正常顯示符號(hào) fig,ax = plt.subplots() x = np.arange(1,6) y1 = np.random.uniform(1.5,1.0,5) y2 = np.random.uniform(1.5,1.0,5) plt.bar(x,y1,width = 0.35,facecolor='lightskyblue',edgecolor = 'white') plt.bar(x+0.35,y2,width = 0.35,facecolor='yellowgreen',edgecolor = 'white') plt.show()

4. 餅圖

? ? ? ? 餅圖(Pie Graph)用于表示不同分類的占比情況,通過(guò)弧度大小來(lái)對(duì)比各種分類,餅圖可以比較清楚的反映出部分與部分、部分與整體之間的比例關(guān)系,易于顯示每組數(shù)據(jù)相對(duì)于總數(shù)的大小,而且顯現(xiàn)的方式直觀。

? ? ? ? 繪制餅圖pie方法的格式:

matplotlib.pyplot.pie(x,explode = None,labels = None,color = None,autopct = None, pctdistance = 0.6,shadow=false,labeldistance=1.1,startangle=None,radius=None,...)

pie函數(shù)常用參數(shù)及其說(shuō)明見(jiàn)表5
?

表5 pie函數(shù)常用參數(shù)及其說(shuō)明
參數(shù)說(shuō)明
x接收array,表示用于繪制餅圖的數(shù)據(jù),無(wú)默認(rèn)
explode接收array,指定項(xiàng)離餅圖圓心為n個(gè)半徑,默認(rèn)為None
labels接收array,指定每一項(xiàng)的名稱,默認(rèn)為None
color接收特定的string或包含顏色字符串的array,表示顏色,默認(rèn)為None
autopct接收特定的string,指定數(shù)值的顯示方式,默認(rèn)為None
pctdistancefloat型,指定每一項(xiàng)的比例和距離餅圖圓心n個(gè)半徑,默認(rèn)為0.6
labeldistancefloat型,指定每一項(xiàng)的名稱和距離餅圖圓心的半徑數(shù),默認(rèn)為1.1
radiusfloat型,表示餅圖的半徑,默認(rèn)為1


?

pie繪圖示例:

plt.figure(figsize=(6,6)) #建立軸的大小 labels = ['Springs','Summer','Autumn','Winter'] x = [15,30,45,10] explode = (0.05,0.05,0.05,0.05) #這個(gè)是控制分離的距離的,默認(rèn)餅圖不分離 plt.pie(x,labels = labels,explode = explode,startangle = 60,autopct='%1.1f%%') #autopct在圖中顯示比例值,注意值的格式 plt.title('Rany days by season') plt.show()

5. 箱線圖?

? ? ? ? 箱線圖(Boxplot)也稱盒須圖,通過(guò)繪制反映數(shù)據(jù)分布特征的統(tǒng)計(jì)量,提供有關(guān)數(shù)據(jù)位置和分散情況的關(guān)鍵信息,尤其在比較不同特征時(shí),更可表現(xiàn)其分散程度差異。箱線圖使用數(shù)據(jù)中的5個(gè)統(tǒng)計(jì)量(最小值,下四分位數(shù),中位數(shù),上四分位數(shù)和最大值)來(lái)描述數(shù)據(jù),它可以粗略地看出數(shù)據(jù)是否具有對(duì)稱性,分布的分散程度等信息,特別可以用于對(duì)幾個(gè)樣本的比較,還可以粗略檢測(cè)異常值。

? ? ? ? boxplot函數(shù)的格式:

matplotlib.pyplot.boxplot(x,notch = None,sym = None,vert = None,whis = None, positions = None,width = None,patch_artist = None, meanline = None,labels = None,...)

boxplot函數(shù)常用參數(shù)及其說(shuō)明見(jiàn)表6:

表6 boxplot函數(shù)常用參數(shù)及其說(shuō)明
參數(shù)說(shuō)明
x接收array,表示用于繪制箱線圖的數(shù)據(jù),無(wú)默認(rèn)
notch接收boolean,表示中間箱體是否有缺口,默認(rèn)為None
sym接收特定的string,指定異常點(diǎn)形狀,默認(rèn)為None
vert接收boolean,表示圖形是縱向的或者橫向,默認(rèn)為None
positions接收array,表示圖形位置,默認(rèn)為None
width接收scalar或者array,表示每個(gè)箱體的寬度,默認(rèn)為None
labels接收array,指定每一個(gè)箱線圖的標(biāo)簽,默認(rèn)為None
meanline接收boolean,表示是否顯示均值線,默認(rèn)為False

boxplot繪圖示例:

import numpy as np import pandas as pd import matplotlib.pyplot as plt np.random.seed(2)#設(shè)置隨機(jī)種子 df = pd.DataFrame(np.random.rand(5,4),columns = ['A','B','C','D']) #生成0~1的5*4維度數(shù)據(jù)并存入4列DataFrame中 df.boxplot() plt.show()

?

6.概率圖?

????????概率圖模型時(shí)圖靈獲得者Pearl提出的用來(lái)表示變量間概率依賴關(guān)系的理論,正態(tài)分布又名高斯分布。正太概率密度函數(shù)normpdf(X,mu,sigma),其中,X為向量,mu為均值,sigma為標(biāo)準(zhǔn)差。

繪制概率圖:

import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.stats import norm fig,ax = plt.subplots() plt.rcParams['font.family'] = ['SimHei'] #用來(lái)顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus'] = False #用來(lái)正常顯示符號(hào) np.random.seed(1587554) mu = 100 sigma = 15 x = mu+sigma*np.random.randn(437) num_bins = 50 n,bins,patches = ax.hist(x,num_bins,density=1,stacked=True) y = norm.pdf(bins,mu,sigma) ax.plot(bins,y,'--') fig.tight_layout() plt.show()

7.雷達(dá)圖?

? ? ? ? 雷達(dá)圖也稱網(wǎng)絡(luò)圖、星圖、蜘蛛網(wǎng)圖、不規(guī)則多邊形、極坐標(biāo)圖等。雷達(dá)圖是以從同一點(diǎn)開(kāi)始的軸上表示的三個(gè)或更多個(gè)定量變量的二維圖表的形式顯示多變量數(shù)據(jù)的圖形方法。軸的相對(duì)位置和角度通常是無(wú)信息的。雷達(dá)圖相當(dāng)于平行坐標(biāo)圖,軸徑向排列。

繪制某學(xué)生成績(jī)信息的雷達(dá)圖

import matplotlib.pyplot as plt import numpy as np %matplotlib inline #某學(xué)生的課程與成績(jī) courses = ['數(shù)據(jù)結(jié)構(gòu)','數(shù)據(jù)可視化','高數(shù)','英語(yǔ)','軟件工程','組成原理','C語(yǔ)言','體育'] scores = [82,95,78,85,45,88,76,88] dataLength = len(scores) #數(shù)據(jù)長(zhǎng)度 #angles數(shù)組把圓周等分為dataLength份 angles = np.linspace(0,2*np.pi,dataLength,endpoint=False) scores.append(scores[0]) angless = np.append(angles,angles[0]) #閉合 #繪制雷達(dá)圖 plt.polar(angless, #設(shè)置角度scores, #設(shè)置各個(gè)角度上的數(shù)據(jù)'rv--', #設(shè)置顏色、線型和端點(diǎn)符號(hào)linewidth=2) #設(shè)置線寬 #設(shè)置角度網(wǎng)絡(luò)標(biāo)簽 plt.thetagrids(angles*180/np.pi,courses,fontproperties='simhei',fontsize=12,color='k') #填充雷達(dá)圖內(nèi)部 plt.fill(angless,scores,facecolor='g',alpha=0.2) plt.show()

8.流向圖?

? ? ? ? 在運(yùn)輸問(wèn)題中,常常需要表明產(chǎn)地的產(chǎn)量、銷地的銷量,以及流向和流量的交通圖,此時(shí)可以用到流向圖。流向圖能夠直觀地展示數(shù)據(jù)流向,揭示出運(yùn)動(dòng)中的一些規(guī)律或現(xiàn)象。

流向圖繪制

import numpy as np import matplotlib.pyplot as plt Y,X = np.mgrid[-3:3:100j,-3:3:100j] U = -1-X**2+Y V = 1+X-Y**2 speed = np.sqrt(U*U+V*V) plt.streamplot(X,Y,U,V,color=U,linewidth = 2,cmap = plt.cm.autumn) plt.colorbar() f,(ax1,ax2) = plt.subplots(ncols=2) ax1.streamplot(X,Y,U,V,density=[0.5,1]) lw = 5*speed/speed.max() ax2.streamplot(X,Y,U,V,density=0.6,color='k',linewidth=lw) plt.show()

?

9.繪圖中的表格設(shè)置?

? ? ? ? 在繪圖中,有時(shí)候需要同時(shí)顯示數(shù)據(jù)表格。Matplotlib在繪圖中提供了table方法可以同時(shí)顯示數(shù)據(jù)表格

在繪圖中顯示數(shù)據(jù)表格

import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] data = [[66386,174296,75131,577908,32015],[58230,381139,78045,99308,160454],[89135,80552,152558,497981,603535],[78415,81858,150656,193263,69638],[139361,331509,343164,781380,52269]] columns = ('Freeze','Wind','Flood','Quake','Hail') rows = ['%d year'% x for x in (100,50,20,10,5)] values = np.arange(0,2500,500) value_increment = 1000 colors = plt.cm.BuPu(np.linspace(0,0.5,len(columns))) n_rows=len(data) index = np.arange(len(columns))+0.3 bar_width=0.4 y_offset = np.array([0.0]*len(columns)) cell_text = [] for row in range(n_rows):plt.bar(index,data[row],bar_width,bottom=y_offset)y_offset = y_offset+data[row]cell_text.append(['%1.1f'%(x/1000.0) for x in y_offset]) colors = colors[::-1] cell_text.reverse() the_table = plt.table(cellText=cell_text,rowLabels=rows,rowColours = colors,colLabels = columns,loc = 'bottom') plt.subplots_adjust(left=0.2,bottom=0.2) plt.ylabel("Loss in ${0}'s".format(value_increment)) plt.yticks(values*value_increment,['%d' % val for val in values]) plt.xticks([]) plt.title('氣象災(zāi)害損失') plt.show()

10. 極坐標(biāo)圖?

? ? ? ? 在平面投影中,由X軸和Y軸定位坐標(biāo);而在極坐標(biāo)投影中,需要以半徑和角度的形式定位坐標(biāo)。極坐標(biāo)投影中的半徑以圓半徑的大小顯示,并且以每個(gè)角度為0°的圓的角度為起點(diǎn)投影角度。要生成極坐標(biāo)投影,需要將投影類型定義為極坐標(biāo)。

繪制極坐標(biāo)圖

import numpy as np import matplotlib.pyplot as plt r = np.linspace(0,2,100) theta = 2*np.pi*r fig = plt.figure(figsize=(13,4)) ax1 = plt.subplot(121,projection='polar') ax1.scatter(theta,r,label='Polar Projection',s=10) ax1.legend(bbox_to_anchor=(0.85,1.35)) ax2 = plt.subplot(122) ax2.scatter(theta,r,label='Polar Projection',s=10) ax2.legend(bbox_to_anchor=(0.85,1.35)) ax2.set_xlabel('R') ax2.set_ylabel(r'$\theta$')

11. 詞云圖?

? ? ? ? 詞云用于對(duì)網(wǎng)絡(luò)文本中出現(xiàn)頻率較高的關(guān)鍵詞予以視覺(jué)上的突出,形成“關(guān)鍵詞云層”或“關(guān)鍵詞渲染”,從而過(guò)濾掉大量的文本信息,使瀏覽網(wǎng)頁(yè)者只需要一眼掃過(guò)文本就可以領(lǐng)略文本的主旨。


11.1 安裝相關(guān)的包

????????繪制詞需要WordCloud和jieba包。jieba用于從文本的句子里分割出詞匯。兩個(gè)包的安裝語(yǔ)句:

pip install wordcloud pip install jieba

11.2 詞云生成過(guò)程

? ? ? ? 一般生成詞云的過(guò)程為:

1)使用Pandas讀取數(shù)據(jù)并將需要分析的數(shù)據(jù)轉(zhuǎn)化為列表
2)對(duì)獲得的列表數(shù)據(jù)使用分詞工具jieba進(jìn)行遍歷分詞

3)使用WordCloud設(shè)置詞云圖片的屬性、掩碼和停用詞,并生成詞云圖像。

?11.3 詞云生成示例:

生成示例在之前博文有發(fā)布過(guò),可以參考進(jìn)行學(xué)習(xí)。
https://blog.csdn.net/weixin_52797843/article/details/122547594?spm=1001.2014.3001.5502

結(jié)尾:


????????關(guān)于python pyplot的十一個(gè)常用的繪圖到此就分享結(jié)束了,感謝大家瀏覽閱讀,有問(wèn)題可以私信或者加Q 180096010一起交流學(xué)習(xí)。

覺(jué)得文章有用的同學(xué),可以收藏方便以后學(xué)習(xí)喲~。

總結(jié)

以上是生活随笔為你收集整理的一篇文章让你学会绘画十一种常见数据分析图(折线图,直方图,散点图,雷达图等等)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。